スプレッドシートからGASのスクリプトを実行するボタン・メニューを追加する方法

Google スプレッドシートでは、スクリプトエディタからGoogle Apps Script (GAS)を利用して関数を定義できます。
今回は、GASで定義したスクリプト内の関数を、スプレッドシート内のメニューまたは、ボタンから実行する方法となります。
スプレッドシート内のボタンから関数を実行する方法
以下の方法では、スプレッドシート内に挿入した図形をクリックすると、関数を実行します。
また、図形はすでに挿入されている前提としています。(図形はメニューバー内の「挿入」>「図形描画」から追加できます)
- 挿入した図形をクリックし、右上に表示されるメニューを選択します。
- メニュー内の「スクリプトを割り当て」を選択します。
- 表示されたダイアログ内のテキスト欄に、作成した関数名を入力し「OK」を選択します。
例では、関数名myFunctionを、挿入した図形に割り当てています
また、上記では関数を実行するボタンを図形としましたが、挿入した画像をボタンとすることも可能です。(画像は、メニューバー内の「挿入」>「画像」から追加できます)
スプレッドシート内のメニューから関数を実行する方法
以下の方法では、スプレッドシート内のメニューバーにメニュー項目を追加し、その項目を選択すると関数を実行します。
例では、上記のようにメニューバーに「追加メニュー」を追加し、その項目内に「メニュー01」「メニュー02」を追加します。
そして、その「メニュー01」「メニュー02」をクリックすると、それぞれの関数を実行します。
スクリプトを作成
スプレッドシートに紐付いたGASのエディタ画面に、以下のコードを追加して保存します。そして、スプレッドシートの画面を更新します。
function onOpen() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
// 関数を実行するメニューごとに、配列の要素をオブジェクトで指定します
const menuEntries = [
{name: "メニュー01", functionName: "myFunction1"},
{name: "メニュー02", functionName: "myFunction2"}
];
ss.addMenu("追加メニュー", menuEntries);
}
// メニュー01を選択すると実行する関数
function myFunction1(){
Browser.msgBox("メニュー01がクリックされました");
}
// メニュー02を選択すると実行する関数
function myFunction2(){
Browser.msgBox("メニュー02がクリックされました");
}
上記のスクリプト内のonOpen()は、Google Apps Scriptの予約済みの関数となり、スプレッドシートを開いた際に実行する関数となります。
そのonOpen関数内では、スプレッドシートのメニューバーに関数を実行できるメニューを追加できる、SpreadsheetクラスのaddMenuメソッドを呼び出しています。
addMenuメソッドの第1引数は、メニューバー内に追加するメニュー名を指定します。
第2引数には、第1引数で追加した項目を選択した際に表示されるメニュー(サブメニュー)を配列で指定します。
その配列の要素は、サブメニューを追加するごとにオブジェクトで指定し、オブジェクトでは、nameの値にサブメニュー名を指定し、functionNameの値に、そのメニューを選択した際に実行する関数名を指定します。
関数を自動実行したい場合
上記例では、スプレッドシートからGASの関数を実行する例でしたが、GASの関数は定期的に自動実行することも可能です。詳しくは以下のリンク先を参考にしてみてください。