スプレッドシートを開いたときに、自動でカスタムメニューが表示されると便利ですよね。onOpenトリガーを使えば、シートを開くたびに自分好みのメニューを追加できます。この記事では、Google Apps Scriptを使ってonOpen関数を記述し、メニューを作成・追加する手順を解説します。初心者の方でも簡単に設定できるよう、コード例とともに順を追って説明します。
【要点】onOpenトリガーでカスタムメニューを自動追加する方法
- onOpen関数の定義: スプレッドシートを開いたときに自動実行される特別な関数です。この関数内にメニュー追加コードを書きます。
- UIクラスのcreateMenuメソッド: メニューを作成し、addItemやaddSubMenuで項目を追加します。addItemで実行する関数を指定できます。
- トリガーの種類の理解: 単純トリガー(onOpen)は制限があるため、必要に応じてインストーラブルトリガーを使い分けます。
ADVERTISEMENT
目次
onOpenトリガーの仕組みとできること
onOpenトリガーは、スプレッドシートを開く操作をきっかけに自動でスクリプトを実行する機能です。Google Apps Scriptのシンプルトリガーの一種で、特別な設定なしに利用できます。このトリガーを使うと、開いた瞬間にメニューを追加したり、特定のセルを更新したり、初期設定を自動化できます。ただし、簡単な処理に限られ、権限が必要な操作(他のファイルへのアクセスなど)は実行できません。また、開いた直後にのみ動作し、編集操作では実行されない点も覚えておきましょう。
Apps ScriptでonOpen関数を記述してメニューを追加する手順
ここでは、実際にスクリプトを作成し、カスタムメニューを追加する手順を説明します。サンプルとして、「データの整理」メニューを作成し、その中に「削除」「並び替え」などの項目を追加します。
- スクリプトエディタを開く
スプレッドシートの上部メニューから「拡張機能」→「Apps Script」を選択します。新しいタブでスクリプトエディタが開きます。 - プロジェクト名を設定する
左上の「無題のプロジェクト」をクリックし、分かりやすい名前(例:「メニュー追加スクリプト」)に変更します。 - onOpen関数を記述する
エディタに以下のコードを貼り付けます。スペルミスに注意し、関数名は必ず「onOpen」にします。function onOpen() { var ui = SpreadsheetApp.getUi(); var menu = ui.createMenu('データの整理'); menu.addItem('削除', 'deleteData'); menu.addItem('並び替え', 'sortData'); menu.addSeparator(); menu.addSubMenu(ui.createMenu('詳細').addItem('集計', 'aggregateData')); menu.addToUi(); } - 各メニュー項目の関数を定義する
同じスクリプトに、メニューから呼び出す関数を追加します。例として「deleteData」「sortData」「aggregateData」という関数を定義します。それぞれの関数には、実際の処理(例:選択範囲の削除、データの並び替えなど)を記述します。 - プロジェクトを保存する
ツールバーの保存アイコン(フロッピーディスク)をクリックするか、Ctrl+S(Macの場合はCmd+S)で保存します。 - onOpen関数をテストする
スプレッドシートのタブに戻り、ページを再読み込みします。すると、メニューバーに「データの整理」が追加されているはずです。各メニュー項目をクリックして、正常に動作するか確認します。
コードのポイント
createMenuの引数がメニュー名になります。addItemの第一引数が表示名、第二引数が実行する関数名です。addSeparatorで区切り線を入れられます。addSubMenuを使うとサブメニューを作成できます。最後にaddToUiでメニューを反映させます。この一連の流れをonOpen関数内に書くことが重要です。
onOpenトリガー設定時によくあるトラブルと対処法
メニューが表示されない
考えられる原因として、onOpen関数のスペルミスやコード内のエラーが挙げられます。スクリプトエディタで実行ボタン(▶)をクリックし、エラーが出ていないか確認します。また、保存後にスプレッドシートを再読み込みする必要があります。それでも表示されない場合は、ブラウザのキャッシュをクリアしてみてください。
メニュー項目をクリックしても何も起こらない
呼び出される関数が正しく定義されていない可能性があります。addItemの第二引数が、実際の関数名と一致しているか確認します。関数名は大文字小文字を区別します。また、関数内でエラーが発生していないか、ログを確認するとよいでしょう。
単純トリガーの制限に引っかかる
onOpenは単純トリガーであるため、実行時間が30秒を超えたり、他のサービスへのアクセス(例:外部API)が許可されていません。もし複雑な処理を伴う場合は、代わりにインストーラブルトリガーを使う必要があります。インストーラブルトリガーは、プロジェクトのトリガー一覧から手動で設定できます。その場合、関数名はonOpen以外の任意の名前にできます。
ADVERTISEMENT
UIクラスのメニュー関連メソッドの比較
| メソッド名 | 機能 | 使用例 |
|---|---|---|
| createMenu | 新しいメニューを作成する | var menu = ui.createMenu(‘カスタムメニュー’) |
| addItem | メニューに項目を追加する | menu.addItem(‘名前’, ‘関数名’) |
| addSubMenu | サブメニューを追加する | menu.addSubMenu(subMenu) |
| addSeparator | 区切り線を追加する | menu.addSeparator() |
| addToUi | メニューをUIに反映させる | menu.addToUi() |
これらのメソッドを組み合わせることで、見やすく機能的なメニューを作成できます。メニューの階層構造が必要な場合は、サブメニューを活用すると整理しやすくなります。
まとめ
この記事では、onOpenトリガーを使ってスプレッドシートを開いたときに自動でカスタムメニューを追加する方法を解説しました。具体的には、Apps ScriptでonOpen関数を定義し、createMenuやaddItemなどのUIメソッドを使ってメニューを作成する手順を学びました。トラブルが発生した場合は、関数名のスペルやトリガーの種類を確認すると解決しやすくなります。次は、メニュー項目からデータ操作や別のスクリプトを呼び出す処理を追加して、より実践的な自動化に挑戦してみてください。例えば、メニューから選択範囲のデータをCSVでエクスポートする機能なども作れます。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
