Google SpreadsheetのGASでaddMenu関数を使ってみよう

Google Spreadsheetは、オンラインで簡単にスプレッドシートを作成・編集・共有できる便利なツールです。しかし、スプレッドシートには、標準で用意されているメニュー以外にも、自分でカスタマイズしたメニューを追加することができます。カスタマイズしたメニューとは、自分が作成したGoogle Apps Script(以下、GAS)の関数を実行できるようにしたものです。カスタマイズしたメニューを使うと、スプレッドシートの操作をより便利にすることができます。

では、カスタマイズしたメニューをどうやって作るのでしょうか?そのときに使うのが、GASのaddMenu関数です。この関数は、スプレッドシートにカスタマイズしたメニューを追加するための関数です。この記事では、この関数の使い方を解説します。

💡この記事でわかること
  • addMenu関数の概要と引数の説明
  • addMenu関数のプログラムサンプルと実行結果
  • addMenu関数の戻り値とその活用方法

addMenu関数とは

addMenu関数は、スプレッドシートにカスタマイズしたメニューを追加するための関数です。この関数は、以下のように書きます。

Spreadsheet.addMenu(name, items)

この関数には、以下の2つの引数があります。

  • name: カスタマイズしたメニューの名前を指定する文字列です。
  • items: カスタマイズしたメニューの項目を指定するオブジェクトの配列です。オブジェクトには、以下の2つのプロパティがあります。
    • name: メニューの項目の名前を指定する文字列です。
    • functionName: メニューの項目をクリックしたときに実行するGASの関数の名前を指定する文字列です。

この関数を使うときは、nameとitemsは必ず指定する必要があります。

addMenu関数のプログラムサンプルと実行結果

では、実際にaddMenu関数を使ってみましょう。以下のプログラムは、スプレッドシートに「My Menu」という名前のカスタマイズしたメニューを追加するものです。このメニューには、「Hello」という項目と「Bye」という項目があります。それぞれの項目をクリックすると、対応するGASの関数が実行されます。

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var menuItems = [
    {name: 'Hello', functionName: 'sayHello'},
    {name: 'Bye', functionName: 'sayBye'}
  ];
  spreadsheet.addMenu('My Menu', menuItems);
}

function sayHello() {
  Browser.msgBox('Hello, world!');
}

function sayBye() {
  Browser.msgBox('Bye, world!');
}

このプログラムを実行すると、スプレッドシートにカスタマイズしたメニューが追加されます。スプレッドシートのメニューバーに「My Menu」というメニューが表示されます。このメニューをクリックすると、以下のような画面が表示されます。

これは、カスタマイズしたメニューの項目を示しています。「Hello」をクリックすると、「Hello, world!」というメッセージボックスが表示されます。「Bye」をクリックすると、「Bye, world!」というメッセージボックスが表示されます。

addMenu関数の戻り値とその活用方法

addMenu関数は、スプレッドシートにカスタマイズしたメニューを追加するだけでなく、追加したメニューの情報を表すMenu型のオブジェクトを戻り値として返します。このオブジェクトを使うと、カスタマイズしたメニューの名前や項目などの情報を取得することができます。

例えば、以下のプログラムは、addMenu関数の戻り値を変数に代入して、その情報をコンソールに出力するものです。

function onOpen() {
  var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
  var menuItems = [
    {name: 'Hello', functionName: 'sayHello'},
    {name: 'Bye', functionName: 'sayBye'}
  ];
  var menu = spreadsheet.addMenu('My Menu', menuItems);
  console.log('Name: ' + menu.getName());
  console.log('Items: ' + menu.getItems());
}

このプログラムを実行すると、コンソールには以下のようなメッセージが表示されます。

[20-01-24 10:38:42:042 JST] Menu added to Spreadsheet with ID 1a2b3c4d5e6f7g8h9i0j: My Menu
[20-01-24 10:38:42:043 JST] Name: My Menu
[20-01-24 10:38:42:044 JST] Items: [Ljava.lang.Object;@1a2b3c4d

これは、カスタマイズしたメニューの名前と項目の情報を示しています。

Menuオブジェクトには、他にも以下のようなメソッドがあります。

  • addItem(name, functionName): カスタマイズしたメニューに新しい項目を追加するメソッドです。引数に項目の名前と関数の名前を指定します。
  • addSeparator(): カスタマイズしたメニューに区切り線を追加するメソッドです。
  • addSubMenu(name, items): カスタマイズしたメニューにサブメニューを追加するメソッドです。引数にサブメニューの名前と項目を指定します。

これらのメソッドを使うと、カスタマイズしたメニューをより細かく設定することができます。

まとめ

この記事では、GASのaddMenu関数について解説しました。この関数は、スプレッドシートにカスタマイズしたメニューを追加するための関数です。カスタマイズしたメニューとは、自分が作成したGASの関数を実行できるようにしたものです。addMenu関数は、カスタマイズしたメニューを追加するだけでなく、追加したメニューの情報を表すオブジェクトを戻り値として返します。このオブジェクトを使うと、カスタマイズしたメニューの名前や項目などの情報を取得することができます。

たけだ

カスタマイズしたメニューは、スプレッドシートの操作をより便利にするための有用な機能です。ぜひ、addMenu関数を使って、スプレッドシートに自分だけのメニューを作ってみてください。

参考文献

Menu | Apps Script | Google Developers

Custom Menus in Google Workspace | Apps Script | Google for Developers

GASをイチから学びたい方へ

このブログでは断片的な説明になってしまっていますが、本書は幅広いGASの内容が網羅的に学べる本です。イチから学びたい方は是非読んでみてください。

すでにGASをある程度マスターした方にも辞書的に手元に置いておくと便利です。