Googleスプレッドシートでよく使うマクロやスクリプトを、毎回スクリプトエディタを開いて実行するのは手間です。そんなときに便利なのが、Apps Scriptでカスタムメニューを追加する方法です。カスタムメニューを使えば、シート内のメニューバーから直接スクリプトをワンクリックで実行できるようになります。この記事では、Apps Scriptを使ってカスタムメニューを追加し、マクロを起動する手順を詳しく解説します。初心者でも簡単に実装できるように、コードのコピペでそのまま使えるサンプルも紹介します。
【要点】Apps Scriptでカスタムメニューを追加する方法
- onOpen関数でメニューを作成: シートを開くたびに自動でカスタムメニューが表示されます。
- ui.createMenuとaddItemで項目を追加: メニューに表示する項目名と実行する関数名を指定します。
- 区切り線やサブメニューも設定可能: 複数の機能を整理して、見やすいメニューにできます。
ADVERTISEMENT
目次
カスタムメニューとは何か
Apps Scriptのカスタムメニューは、スプレッドシートの上部メニューバーに独自のメニューを追加できる機能です。通常、スクリプトエディタで関数を実行するには、エディタを開いて実行ボタンを押す必要がありますが、カスタムメニューを使えばシート上から直接実行できます。この機能は、他のユーザーにもスクリプトを使ってもらいたい場合や、頻繁に実行する処理を簡単に呼び出したい場合に非常に便利です。カスタムメニューはonOpenトリガーを使って自動生成するため、シートを開くたびに最新のメニューが表示されます。
カスタムメニューを追加する手順
- スクリプトエディタを開く
スプレッドシートのメニューから「拡張機能」→「Apps Script」をクリックします。新しいタブでスクリプトエディタが開きます。 - 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();
} - 実行する関数を定義する
同じスクリプトファイルに、呼び出す関数を追加します。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');
} - プロジェクトを保存して承認する
スクリプトエディタで「保存」ボタンをクリックし、プロジェクト名を適当に付けます。初回実行時には権限の承認が必要です。自分のメールアドレスやスプレッドシートへのアクセス許可を求められたら「許可」をクリックします。 - シートを再読み込みしてメニューを確認
スプレッドシートのタブに戻り、ページをリロード(F5)します。メニューバーに「カスタムメニュー」が追加されていることを確認します。クリックすると、設定した項目が表示され、各項目をクリックすると対応する関数が実行されます。
カスタムメニューが表示されないときの対処法
メニュー自体が表示されない
onOpen関数が正しく実行されていない可能性があります。スクリプトエディタでonOpenを手動実行(関数一覧からonOpenを選んで実行)して、エラーがないか確認します。エラーがある場合は、コードの記述ミスを修正します。また、初回は承認が必要なので、必ず権限を許可してください。
メニュー項目をクリックしても反応がない
呼び出している関数が存在しない、またはエラーになっている場合があります。スクリプトエディタで該当の関数を直接実行して、正しく動作するかテストします。関数名のスペルミスや、引数の不一致がないか確認しましょう。
他のユーザーにメニューが表示されない
スクリプトを共有している場合、他のユーザーにもメニューを表示させるには、スクリプトがインストール可能なトリガーとして設定されている必要があります。onOpenは簡易トリガーですが、他のユーザーに表示させるには二重の承認が必要な場合があります。代わりに、インストール可能なトリガー(onOpen)を設定することも検討します。
メニューを削除・編集したい
メニューを削除するには、createMenuではなくremoveMenuを使うか、スクリプト内でメニューを追加しないように変更してシートを再読み込みします。編集はコードを修正して保存し、シートをリロードすれば反映されます。
ADVERTISEMENT
カスタムメニューとスクリプトエディタ実行の比較
| 項目 | カスタムメニュー | スクリプトエディタから実行 |
|---|---|---|
| 実行の手軽さ | シート上からワンクリック | エディタを開いて関数を選んで実行 |
| 他のユーザーの利用 | メニューから簡単に呼び出せる | 他のユーザーもエディタ操作が必要 |
| トリガー設定 | onOpenで自動表示 | 手動で実行ボタンを押す |
| エラー発見 | メニュー項目をクリックして確認 | エディタの実行ログで確認 |
| カスタマイズ性 | サブメニュー、区切り線など自由 | 関数の並び順はコード次第 |
まとめ
この記事では、Apps Scriptを使ってGoogleスプレッドシートにカスタムメニューを追加し、ワンクリックでスクリプトを実行する方法を解説しました。onOpen関数にcreateMenuとaddItemを組み合わせるだけで、簡単に独自メニューを作成できます。頻繁に使う定型処理や、チームで共有するスクリプトはカスタムメニューに登録しておくと、作業効率が格段に向上します。次は、メニュー項目にアイコンを付けたり、条件によって表示を切り替えるなど、さらに高度なカスタマイズにも挑戦してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】複合グラフで棒と折れ線を同時表示!2軸グラフの作り方
- 【Googleスプレッドシート】FILTER関数で条件に合う行だけ抽出!数式1つで動的な絞り込み
- 【Googleスプレッドシート】フィルタ表示で他の人の表示を変えずに絞り込み!共有時の使い分け
- 【Googleスプレッドシート】重複データを抽出して表示!COUNTIFと条件付き書式の併用
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】ARRAYFORMULAで列全体に数式を一括適用!セル分の入力を不要に
- 【Googleスプレッドシート】データ範囲を動的に伸縮させる!INDIRECTと参照範囲のコツ
- 【Googleスプレッドシート】共有解除と権限の取り消し!アクセスを完全に閉じる手順
