Google Apps Scriptを使ってGoogle Sheetsに関数を実行するメニューを追加する

スプレッドシートのツール > スクリプト エディッタに次のように書く:
function onOpen() {
 var ui = SpreadsheetApp.getUi();
 ui.createAddonMenu().addItem('My Action in Addon', '実行する関数名').addToUi(); // アドオンとしてつける
 ui.createMenu('My Menu').addItem('My Action in Menu', '実行する関数名').addToUi(); // メニューとしてつける
}
関数onOpenはスプレッドシートを開いたときに自動的に実行される。

ライブラリの使い方を知らなかったので、これを使って関数を分離する。

Google Apps Scriptのプロジェクトをライブラリとして使う準備

ライブラリに追加するGoogle Apps Scriptのプロジェクトを用意する
次のコードをスクリプトファイルに保存する:
function init() {
 _addMenu();
}

function _addMenu() {
 var ui = SpreadsheetApp.getUi();
 ui.createAddonMenu().addItem('My Action in Addon', 'execute').addToUi();
 ui.createMenu('My Menu').addItem('My Action in Menu', 'execute').addToUi();
}

function execute() {
 var ui = SpreadsheetApp.getUi();
 var res = ui.alert('My App', 'Execute my action?', ui.ButtonSet.OK_CANCEL);
 if ( res == ui.Button.OK ) _getSheetId();
}

function _getSheetId() {
 var ssId = SpreadsheetApp.getActiveSpreadsheet().getId();
 Browser.msgBox(ssId);
}
スクリプトIDを取得する
ファイル > プロジェクトのプロパティでプロジェクトのプロパティを開き、スクリプトIDの項にある値を控える。
ライブラリとして使えるようにする
ファイル > 版を管理で新しいバージョンを保存する。

スクリプトをライブラリとして使う

スプレッドシートのライブラリに追加する
ライブラリを使うスプレッドシートを開く。
ツール > スクリプト エディッタでこのスプレッドシートのスクリプトを編集する画面を開く。
リソース > ライブラリ...でこのスプレッドシートのスクリプトが使うライブラリの画面を開く。
控えたスクリプトIDを追加する。
ライブラリでバージョンや識別子を設定する
バージョンを選択する。
識別子をMyProjectForLibraryにする。
直接的に動かすスクリプトを書いて保存する
function onOpen() {
  MyProjectForLibrary.init();
}

function execute() {
  MyProjectForLibrary.execute();
}
スプレッドシートのスクリプトを動かす
スプレッドシートを再読み込みする。
メニューまたはアドオンに追加された項目を選択し、関数を実行する。
承認を求められたら許可をする。
2019/08/24 08:46
タグ