【スプレッドシート】作成した関数を実行するボタン・メニューを追加する方法

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

今回は、その作成した関数をスプレッドシートのファイル内のメニューまたは、ボタンから実行する方法となります。

ボタンから作成した関数を実行する方法

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

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

  1. 挿入した図形をクリックし、右上に表示されるメニューを選択します。
    スプレッドシート内に挿入した図形の画像
  2. メニュー内の「スクリプトを割り当て」を選択します。
    図形のメニューの画像
  3. 表示されたダイアログ内のテキスト欄に、作成した関数名を入力し「OK」を選択します。
    「スクリプトを割り当て」のポップアップの画像
    例では、関数名がmyFunctionの関数を、挿入した図形に割り当てています

また、上記では関数を実行するボタンを図形としましたが、挿入した画像をボタンとすることも可能です。(画像は、メニューバー内の「挿入」>「画像」から追加できます)

メニューから作成した関数を実行する方法

以下の方法では、スプレッドシート内のメニューバーに項目を追加し、その項目をクリックすると関数を実行します。

例では、次のようにメニューバーに「追加メニュー」を追加し、その項目内に「メニュー01」「メニュー02」を追加します。その「メニュー01」「メニュー02」をクリックすると、それぞれの関数を実行します。

スプレッドシートのメニューバーに追加した項目の画像

以下、Google Apps Scriptのスクリプト例となり、スクリプトエディタに追加します。

function onOpen() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();

  // 関数を実行するメニューごとに、配列の要素をオブジェクトで指定します
  var 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の値に、そのメニューを選択した際に実行する関数名を指定します。

参考サイトなど

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

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

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