Google Apps Scriptでメニューを追加する方法です。
addMenu()を使う方法
SpreadsheetオブジェクトのaddMenu()メソッドを使い方法です。
onOpen()関数でドキュメントを開いたときに実行する関数を作成します。
function onOpen(e) {
...
}
getActiveSpreadsheet()でアクティブなスプレッドシートのSpreadsheetオブジェクトを取得します。
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
SpreadsheetオブジェクトのaddMenu()メソッドでメニューを追加します。
spreadsheet.addMenu("追加メニュー", subMenus);
addMenu()メソッドの引数subMenusは、メニューに表示する名前nameと実行する関数の名前functionNameを持つオ
ブジェクトの配列です。
var subMenus = [
{name: "追加メニュー1", functionName: "menu1"},
{name: "追加メニュー2", functionName: "menu2"},
];
全体のコードは次のようになります。
function onOpen(e) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var subMenus = [
{name: "追加メニュー1", functionName: "menu1"},
{name: "追加メニュー2", functionName: "menu2"},
];
spreadsheet.addMenu("追加メニュー", subMenus);
}
function menu1() {
Logger.log("追加メニュー1");
}
function menu2() {
Logger.log("追加メニュー2");
}
UiクラスのMenuオブジェクトを使う方法
SpreadsheetオブジェクトのgetUi()メソッドでUiオブジェクトを取得します。
var ui = SpreadsheetApp.getUi();
UIクラスのcreateMenu()メソッドでMenuオブジェクトを作成します。
var menu = ui..createMenu('追加メニュー');
MenuクラスのaddItem()メソッドにメニューに表示する名前を実行する関数を指定してメニュー項目を追加します。
menu.addItem('メニュー1', 'myFunction1')
MenuクラスのaddSeparator()メソッドでメニューに区切りを追加できます。
menu.addSeparator();
MenuクラスのaddSubMenu()メソッドでサブメニューを追加できます。
var subMenu = SpreadsheetApp.getUi().createMenu('サブメニュー');
subMenu.addItem('メニュー2', 'myFunction2');
var subMenu = menu.addSubMenu(subMenu);
最後にaddToUi()メソッドでユーザーインターフェースにメニューを追加します。
menu.addToUi();
全体のコードは次のようになります。
function onOpen(e) {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu('追加メニュー');
menu.addItem('メニュー1', 'myFunction1')
menu.addSeparator();
var subMenu = SpreadsheetApp.getUi().createMenu('サブメニュー');
subMenu.addItem('メニュー2', 'myFunction2');
var subMenu = menu.addSubMenu(subMenu);
menu.addToUi();
}
addItem()メソッド、addSeparator()メソッド、addSubMenu()メソッドはMenuオブジェクトを返すため、次のようにメソッドチェーンを使って、簡潔に記述することができます。
function onOpen(e) {
SpreadsheetApp.getUi()
.createMenu('追加メニュー')
.addItem('メニュー1', 'myFunction1')
.addSeparator()
.addSubMenu(SpreadsheetApp.getUi().createMenu('サブメニュー')
.addItem('メニュー2', 'myFunction2')
.addItem('メニュー3', 'myFunction2'))
.addToUi();
}