Google Apps Scriptでメニューを追加する

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();
}

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

This site uses Akismet to reduce spam. Learn how your comment data is processed.