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

Google スプレッドシートでは、スクリプトエディタからGoogle Apps Script (GAS)を利用して関数を定義できます。

今回は、GASで定義したスクリプト内の関数を、スプレッドシート内のメニューまたは、ボタンから実行する方法となります。

スプレッドシート内のボタンから関数を実行する方法

以下の方法では、スプレッドシート内に挿入した図形をクリックすると、関数を実行します。

また、図形はすでに挿入されている前提としています。(図形はメニューバー内の「挿入」>「図形描画」から追加できます)

  1. 挿入した図形をクリックし、右上に表示されるメニューを選択します。
    スプレッドシート内に挿入した図形の画像
  2. メニュー内の「スクリプトを割り当て」を選択します。
    図形のメニューの画像
  3. 表示されたダイアログ内のテキスト欄に、作成した関数名を入力し「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の関数は定期的に自動実行することも可能です。詳しくは以下のリンク先を参考にしてみてください。

参考サイトなど

コメント投稿コメント投稿欄を開く

コメントは項目欄(*は必須項目)を入力し、「コメントを送信」ボタンをクリックしてください。 (メールアドレスは公開されることはありません。コメントの公開は承認制となります。)

また、多忙によりコメントには返信できない場合があります。

Twitterで返信する場合はこちらから。