【Googleスプレッドシート】Apps Scriptでメニューを追加!カスタムメニューでマクロ起動

【Googleスプレッドシート】Apps Scriptでメニューを追加!カスタムメニューでマクロ起動
🛡️ 超解決

Googleスプレッドシートでよく使うマクロやスクリプトを、毎回スクリプトエディタを開いて実行するのは手間です。そんなときに便利なのが、Apps Scriptでカスタムメニューを追加する方法です。カスタムメニューを使えば、シート内のメニューバーから直接スクリプトをワンクリックで実行できるようになります。この記事では、Apps Scriptを使ってカスタムメニューを追加し、マクロを起動する手順を詳しく解説します。初心者でも簡単に実装できるように、コードのコピペでそのまま使えるサンプルも紹介します。

【要点】Apps Scriptでカスタムメニューを追加する方法

  • onOpen関数でメニューを作成: シートを開くたびに自動でカスタムメニューが表示されます。
  • ui.createMenuとaddItemで項目を追加: メニューに表示する項目名と実行する関数名を指定します。
  • 区切り線やサブメニューも設定可能: 複数の機能を整理して、見やすいメニューにできます。

ADVERTISEMENT

カスタムメニューとは何か

Apps Scriptのカスタムメニューは、スプレッドシートの上部メニューバーに独自のメニューを追加できる機能です。通常、スクリプトエディタで関数を実行するには、エディタを開いて実行ボタンを押す必要がありますが、カスタムメニューを使えばシート上から直接実行できます。この機能は、他のユーザーにもスクリプトを使ってもらいたい場合や、頻繁に実行する処理を簡単に呼び出したい場合に非常に便利です。カスタムメニューはonOpenトリガーを使って自動生成するため、シートを開くたびに最新のメニューが表示されます。

カスタムメニューを追加する手順

  1. スクリプトエディタを開く
    スプレッドシートのメニューから「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。
  2. onOpen関数を記述する
    エディタに以下のコードを貼り付けます。
    function onOpen() {
    var ui = SpreadsheetApp.getUi();
    var menu = ui.createMenu('カスタムメニュー');
    menu.addItem('メニュー項目1', 'myFunction1');
    menu.addSeparator();
    menu.addItem('メニュー項目2', 'myFunction2');
    menu.addSubMenu(ui.createMenu('サブメニュー')
    .addItem('サブ項目1', 'subFunction1')
    .addItem('サブ項目2', 'subFunction2'));
    menu.addToUi();
    }
  3. 実行する関数を定義する
    同じスクリプトファイルに、呼び出す関数を追加します。
    function myFunction1() {
    SpreadsheetApp.getUi().alert('メニュー項目1が実行されました');
    }
    function myFunction2() {
    var sheet = SpreadsheetApp.getActiveSheet();
    sheet.getRange('A1').setValue('実行済み');
    }
    function subFunction1() {
    SpreadsheetApp.getActiveRange().setBackground('yellow');
    }
    function subFunction2() {
    Browser.msgBox('サブメニュー2');
    }
  4. プロジェクトを保存して承認する
    スクリプトエディタで「保存」ボタンをクリックし、プロジェクト名を適当に付けます。初回実行時には権限の承認が必要です。自分のメールアドレスやスプレッドシートへのアクセス許可を求められたら「許可」をクリックします。
  5. シートを再読み込みしてメニューを確認
    スプレッドシートのタブに戻り、ページをリロード(F5)します。メニューバーに「カスタムメニュー」が追加されていることを確認します。クリックすると、設定した項目が表示され、各項目をクリックすると対応する関数が実行されます。

カスタムメニューが表示されないときの対処法

メニュー自体が表示されない

onOpen関数が正しく実行されていない可能性があります。スクリプトエディタでonOpenを手動実行(関数一覧からonOpenを選んで実行)して、エラーがないか確認します。エラーがある場合は、コードの記述ミスを修正します。また、初回は承認が必要なので、必ず権限を許可してください。

メニュー項目をクリックしても反応がない

呼び出している関数が存在しない、またはエラーになっている場合があります。スクリプトエディタで該当の関数を直接実行して、正しく動作するかテストします。関数名のスペルミスや、引数の不一致がないか確認しましょう。

他のユーザーにメニューが表示されない

スクリプトを共有している場合、他のユーザーにもメニューを表示させるには、スクリプトがインストール可能なトリガーとして設定されている必要があります。onOpenは簡易トリガーですが、他のユーザーに表示させるには二重の承認が必要な場合があります。代わりに、インストール可能なトリガー(onOpen)を設定することも検討します。

メニューを削除・編集したい

メニューを削除するには、createMenuではなくremoveMenuを使うか、スクリプト内でメニューを追加しないように変更してシートを再読み込みします。編集はコードを修正して保存し、シートをリロードすれば反映されます。

ADVERTISEMENT

カスタムメニューとスクリプトエディタ実行の比較

項目 カスタムメニュー スクリプトエディタから実行
実行の手軽さ シート上からワンクリック エディタを開いて関数を選んで実行
他のユーザーの利用 メニューから簡単に呼び出せる 他のユーザーもエディタ操作が必要
トリガー設定 onOpenで自動表示 手動で実行ボタンを押す
エラー発見 メニュー項目をクリックして確認 エディタの実行ログで確認
カスタマイズ性 サブメニュー、区切り線など自由 関数の並び順はコード次第

まとめ

この記事では、Apps Scriptを使ってGoogleスプレッドシートにカスタムメニューを追加し、ワンクリックでスクリプトを実行する方法を解説しました。onOpen関数にcreateMenuとaddItemを組み合わせるだけで、簡単に独自メニューを作成できます。頻繁に使う定型処理や、チームで共有するスクリプトはカスタムメニューに登録しておくと、作業効率が格段に向上します。次は、メニュー項目にアイコンを付けたり、条件によって表示を切り替えるなど、さらに高度なカスタマイズにも挑戦してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。