GoogleスプレッドシートでGoogle Apps Script(GAS)を使って便利なスクリプトを組んでも、毎回スクリプトエディタを開いて実行するのは手間がかかりますよね。
そこで今回は、スプレッドシートのメニューにオリジナルの「カスタムメニュー」を追加する方法をご紹介します。
ボタンを使わず、スマートに機能を呼び出せるようになるので、操作性がぐっと向上します。
カスタムメニューとは?
スクリプトを実行するための便利な仕組み
Google Apps Scriptでは、スプレッドシートの上部メニューに自作メニューを追加することができます。
これにより、エディタを開かずにワンクリックで処理を実行できます。
ボタンとの違いとメリット
画像や図形にスクリプトを割り当ててボタンのようにする方法もありますが、カスタムメニューなら画面をスッキリ保ちながら、複数の機能を階層構造で整理できます。
たとえば毎月の請求書作成のたびに「請求書自動生成スクリプト」を実行する場合、ボタンだと位置がずれたり、見た目の邪魔になります。
カスタムメニューにすれば、スプレッドシートを開いたときに上部に表示され、どのシートでもすぐに実行できるようになります。
Google Apps Scriptでカスタムメニューを作るための基本メソッド
以下の5つのメソッドを使って、カスタムメニューを組み立てます。
createMenu(caption):メニューを作成する
SpreadsheetApp.getUi().createMenu("メニュー名")
addItem(caption, functionName):メニュー項目を追加
menu.addItem("項目名", "関数名")
addSeparator():区切り線を追加
menu.addSeparator()
addSubMenu(menu):サブメニューを追加
menu.addSubMenu(subMenu)
addToUi():メニューをUIに反映する
menu.addToUi()
スプレッドシートにカスタムメニューを追加するGASコード例
function onOpen(e) {
const ui = SpreadsheetApp.getUi();
ui.createMenu("カスタムメニュー")
.addItem("メニュー1", "menu1_function")
.addItem("メニュー2", "menu2_function")
.addSeparator()
.addSubMenu(
ui.createMenu("サブメニュー")
.addItem("メニュー3", "menu3_function")
.addItem("メニュー4", "menu4_function")
)
.addToUi();
}
/**
* メニュー1が押された時の処理
*/
function menu1_function() {
SpreadsheetApp.getUi().alert("menu1");
}
/**
* メニュー2が押された時の処理
*/
function menu2_function() {
SpreadsheetApp.getUi().alert("menu2");
}
/**
* メニュー3が押された時の処理
*/
function menu3_function() {
SpreadsheetApp.getUi().alert("menu3");
}
/**
* メニュー4が押された時の処理
*/
function menu4_function() {
SpreadsheetApp.getUi().alert("menu4");
}
コード解説
onOpen(e)はシンプルトリガーで、スプレッドシートを開いたときに自動で呼び出されます。createMenu()でメニュー作成、addItem()で項目追加、addSubMenu()でサブメニュー追加、addToUi()でUIに追加します。- このように
onOpenトリガーを活用することで、スプレッドシートのUIに自動でカスタムメニューを追加することができます。

onOpen関数の仕組みと注意点
スプレッドシート起動時に自動で実行される仕組み
onOpen(e) 関数は、スプレッドシートを開いたときに自動で実行される「シンプルトリガー」です。
onOpen(e) の “e” はなぜ必要?
引数 e を省略して function onOpen() と書いても動作はしますが、正しいトリガーとして認識されない場合があります。必ず引数を入れる習慣をつけましょう。
スクリプトエディタの開き方
- スプレッドシートを開く
- 上部メニューの「拡張機能」→「Apps Script」をクリック
これでコンテナバインド型スクリプトのエディタが開きます。
FAQ(よくある質問)
- Qカスタムメニューが表示されません。どうすればいいですか?
- A
- スプレッドシートを再読み込みしてみてください。
function onOpen(e)にeを入れ忘れていないか確認。- スタンドアロンスクリプトではなく、コンテナバインド型で実行しているか確認してください。
- Qボタンとカスタムメニュー、どっちを使うのがよいですか?
- A
カスタムメニューは画面をすっきり保てるため、複数機能を扱う場合におすすめです。
- Q他のユーザーにもメニューは表示されますか?
- A
はい。スクリプトが有効な状態で共有されていれば、他のユーザーにも表示されます。
- Qメニューは毎回手動で追加しなければなりませんか?
- A
いいえ。onOpen関数がある場合、自動でメニューが追加されます。
まとめ
Google Apps Scriptでスプレッドシートにカスタムメニューを追加することで、スクリプトをもっと手軽に活用できるようになります。
今回ご紹介した基本的なメソッドとサンプルコードを活用して、自分だけの操作メニューを作ってみましょう!





難しそうに見えるかもしれませんが、ここで紹介するコードはすべてコピペで使えます。プログラミング初心者の方でもそのまま貼り付けて試せる内容です。