メニューを操作する

【GAS】スプレッドシートのUIに関数メニューを追加する

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)-yes
addMenu(name, subMenus)を実行した場合

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)のパラメーター

名前タイプ説明
nameString作成するメニューの名前。
subMenusObject[]nameおよびfunctionName パラメータを含むJavaScriptマップの配列。Library.libFunction1に含まれているライブラリの関数を使用できます。
addMenu(name, subMenus)の高度なパラメーター

スプレッドシートのUIに関数メニューを追加するまとめ

GAS×スプレッドシートのUIに関数メニューを追加するならaddMenu(name, subMenus)メソッドを利用しましょう。

関連記事:【GAS】スプレッドシートに名前とインデックスを指定した新規シートを挿入する

関連記事:【GAS】スプレッドシートで指定した名前で新規シートを作成する

関連記事:【GAS】スプレッドシートのグリッド線を非表示にする

関連記事:【GAS】スプレッドシートのシート名を変更する

関連記事:【GAS】スプレッドシートをコピーして新規シートを作成する

関連記事:【GAS】スプレッドシートのアクティブシートを削除する

関連記事:【GAS】スプレッドシートで現在アクティブなシートを返す

関連記事:【GAS】スプレッドシートで名前・行・列数を指定して新規シートする

関連記事:【GAS】スプレッドシートのアクティブシートの名前を取得する

関連記事:【GAS】スプレッドシートでアクティブなシートを返す

関連記事:【GAS】スプレッドシートでアクティブなシートを取得する

-メニューを操作する