はじめに
Googleスプレッドシートを日々の業務や個人プロジェクトで活用していると、「もっと効率的に操作できたら」と感じることはありませんか?そんなときに便利なのが、Google Apps Script(GAS)を使ったカスタムメニューです。
カスタムメニューを使えば、スプレッドシートのメニューに独自の機能を追加することができ、クリックひとつで複雑な操作を簡単に実行できるようになります。
なお、GASのセットアップや基本的な開発環境の整え方については、別記事
で詳しく解説しています。
この記事では、スプレッドシートにカスタムメニューを追加する具体的な方法を解説します。
スプレッドシートをさらに便利にカスタマイズしたい方は、ぜひ最後までお読みください!
カスタムメニューの初期状態を確認しよう
Googleスプレッドシートを開くと、以下の画像のように標準のメニューバーが表示されます。このメニューには「ファイル」「編集」「挿入」などが並んでおり、基本的な操作はここから行えます。
ですが、このメニューバーに独自のメニューを追加することで、頻繁に使う操作を簡単に実行できるようになります。
以下では、カスタムメニューの作成方法をステップごとに解説します。
カスタムメニューを作成する方法
1. 基本のカスタムメニューを作成
まず、以下のコードを使って基本的なメニューを追加する方法を紹介します。
function onOpen() { var ui = SpreadsheetApp.getUi(); ui.createMenu('便利機能') // メニュー名を設定 .addItem('データをクリア', 'clearData') // 単一のメニュー項目を追加 .addToUi(); // メニューをUIに追加 } function clearData() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.clearContents(); // データだけを削除 SpreadsheetApp.getUi().alert('データをクリアしました!'); // 完了メッセージを表示 }
コード解説
SpreadsheetApp.getUi()
スプレッドシートのユーザーインターフェイス(UI)を取得します。
このUIを利用してカスタムメニューを作成します。ui.createMenu('便利機能')
新しいメニュー「便利機能」を作成します。
このメニュー名は、スプレッドシートのメニューバーに表示されます。addItem('データをクリア', 'clearData')
メニューの中に「データをクリア」という項目を追加します。
'clearData'
は、この項目がクリックされたときに実行される関数の名前です。 ※自身が作成した処理をなんでも設定してください。addToUi()
作成したメニューを実際にユーザーインターフェイスに反映させます。
これにより、スプレッドシートを開くと「便利機能」というメニューが右上に追加され、そこから「データをクリア」を実行できます。
メニューの中にさらにサブメニューを作成
カスタムメニューの中に、さらに細かい項目を分類できる「サブメニュー」を作ることも可能です。
function onOpen() { var ui = SpreadsheetApp.getUi(); // メインメニューを作成 var mainMenu = ui.createMenu('便利機能'); // サブメニューを作成 var subMenu = ui.createMenu('データ操作') .addItem('データをクリア', 'clearData') // サブメニューの項目を追加 .addItem('行を削除', 'deleteRow'); // サブメニューの別の項目を追加 // メインメニューにサブメニューを追加 mainMenu.addSubMenu(subMenu); // メニュー全体をUIに追加 mainMenu.addToUi(); } // 各機能のスクリプト function clearData() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.clearContents(); SpreadsheetApp.getUi().alert('データをクリアしました!'); } function deleteRow() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); sheet.deleteRow(sheet.getActiveCell().getRow()); SpreadsheetApp.getUi().alert('現在選択されている行を削除しました!'); }
サブメニューに関連するコード解説
createMenu('データ操作')
「データ操作」という名前のサブメニューを作成します。
このサブメニューはメインメニュー「便利機能」に組み込まれます。addItem('データをクリア', 'clearData')
サブメニュー内に「データをクリア」という項目を追加します。
クリックすると、clearData
関数が実行されます。addItem('行を削除', 'deleteRow')
サブメニュー内に「行を削除」という項目を追加します。
クリックすると、deleteRow
関数が実行されます。addSubMenu(subMenu)
作成したサブメニューをメインメニュー「便利機能」に組み込みます。
これにより、メインメニューをクリックすると、その中にサブメニューが表示されるようになります。
実行結果
メインメニュー:「便利機能」がスプレッドシートのメニューに追加。
サブメニュー:「便利機能」の中に「データ操作」というサブメニューがあり、その中に「データをクリア」「行を削除」の項目が並ぶ。
カスタムメニューを削除(リセット)する方法
カスタムメニューはスプレッドシートを開いた際にonOpen
関数で追加されます。そのため、カスタムメニューを削除したい場合は、以下のいずれかの方法でメニューをリセットできます。
方法 1: onOpen関数を空にする
onOpen
関数で作成したカスタムメニューを削除するには、onOpen
関数の内容を空にして保存します。次にスプレッドシートを再読み込みすると、カスタムメニューがリセットされます。
これにより、次回スプレッドシートを開いた際にカスタムメニューが表示されなくなります。
方法 2: スクリプトを削除する
スクリプトエディタ内でカスタムメニューに関連するスクリプトを削除し、スプレッドシートを再読み込みすると、カスタムメニューも消えます。
- スクリプトエディタを開きます(「拡張機能」→「Apps Script」)。
- カスタムメニューを追加するコード(例:
onOpen
関数)を削除します。 - スプレッドシートを再読み込みします。
まとめ
この記事を参考にして、ぜひ独自のカスタムメニューを作成し、スプレッドシートをさらに便利にカスタマイズしてみてください。また、条件付きで動的にメニューを変更する方法や、さらに複雑な機能を追加する方法も試してみると、作業効率がさらに向上します。
シンプルで実用的なカスタムメニューを作り、Googleスプレッドシートを使いこなしましょう!
コメント