GASでスプレッドシートのUIに関数メニューを追加するには「addMenu(name, subMenus)
」を利用する。
addMenu(name, subMenus)
スプレッドシートUIに新しいメニューを作成します。 各メニューエントリは、ユーザー定義関数を実行します。通常は、onOpen()関数から呼び出して、スプレッドシートが読み込まれたときにメニューが自動的に作成されるようにします。
https://developers.google.com/apps-script/reference/spreadsheet/spreadsheet?hl=en#addmenuname,-submenus
スプレッドシートのUIに関数メニューを追加するGAS実行の様子
addMenu(name, subMenus)メソッドを利用して、スプレッドシートのUIに関数メニューを追加するGASを実行してみました。
addMenu(name, subMenus)メソッドは公式ドキュメントには、「onOpen()」メソッドを用いた記述がありますが、任意で動作(新規メニュー作成・挿入)させることも可能です。
insertSheet()
メソッドでシート名とオプションを指定したシート挿入を行う場合は、以下記事を御覧ください。
参照記事:【GAS】挿入するインデックスを指定してスプレッドシートに新規シートを挿入する
スプレッドシートのUIに関数メニューを追加するGAS
function addmenu(){
//SpreadSheetAppを起動
var ss = SpreadsheetApp.getActiveSpreadsheet();
//YES・Noを確認
var txt = Browser.msgBox("新規メニューを追加しますか?",Browser.Buttons.YES_NO);
//yesならメニュー追加
if(txt == "yes") {
//addmenusを[]で配列定義
var addmenus = [];
//サブメニューMenu1を押したらfunction1を起動
addmenus.push({name:"Menu1",functionName:"function1"});
//nullで(サブメニューの中身無し)区切り線作成
addmenus.push(null);
//サブメニューMenu2を押したらfunction2を起動
addmenus.push({name:"Menu2",functionName:"function2"});
//■addMenuで新規追加メニューをメニューへ設置。addmenusをサブメニューへ
ss.addMenu("新規追加メニュー",addmenus);
//メニュー追加しない旨をメッセージで掲載
Browser.msgBox("新規メニューを追加しました!");
//Noなら新規メニュー追加しない
}else if(txt == "no"){
ss.removeMenu("新規追加メニュー");
//メニュー追加しない旨をメッセージで掲載
Browser.msgBox("新規メニューは追加しませんでした");
}
}
//-----サブメニュー用function-----
//サブメニューで呼び出すfunction1
function function1(){
Browser.msgBox("function1を起動しました");
}
//サブメニューで呼び出すfunction2
function function2(){
Browser.msgBox("function2を起動しました");
}
//-----SubMenuFunctionここまで-----
addMenu(name, subMenus)のパラメーター
名前 | タイプ | 説明 |
---|---|---|
name | String | 作成するメニューの名前。 |
subMenus | Object[] | nameおよびfunctionName パラメータを含むJavaScriptマップの配列。Library.libFunction1に含まれているライブラリの関数を使用できます。 |
スプレッドシートのUIに関数メニューを追加するまとめ
GAS×スプレッドシートのUIに関数メニューを追加するならaddMenu(name, subMenus)
メソッドを利用しましょう。
関連記事:【GAS】スプレッドシートに名前とインデックスを指定した新規シートを挿入する
関連記事:【GAS】スプレッドシートで指定した名前で新規シートを作成する
関連記事:【GAS】スプレッドシートのグリッド線を非表示にする
関連記事:【GAS】スプレッドシートをコピーして新規シートを作成する
関連記事:【GAS】スプレッドシートのアクティブシートを削除する
関連記事:【GAS】スプレッドシートで現在アクティブなシートを返す
関連記事:【GAS】スプレッドシートで名前・行・列数を指定して新規シートする
関連記事:【GAS】スプレッドシートのアクティブシートの名前を取得する