googleスプレッドシートのAppsScriptを上部メニューから発火させる方法

初めて触ったよね。

この記事でわかること

Apps Scriptは「拡張機能」→「Apps Script」からアクセスして、「実行」を押すことで発火する。

作成してるときとか毎回チューニングが必要ならそれでいいんだけど、作成が完了して後は発火させるだけ、中身を弄る必要がないならむしろApps Scriptを開いて何かやっちゃったら怖いわけで開きたくない。

で、Apps Scriptはスプレッドシート上で発火させることができる。

まず、シート上に図形を設置してそれをボタンにしてクリックさせる事ができる。
これは基本的に邪魔くさいので却下。

次に、サイドバーを作ってその中にコンテンツを表示できるから、そこにボタンを設置する方法。
これは画面が狭くなるわけで、表示領域が減っちゃうからだるい。
ノートPCとかの画面が狭い環境で致命傷だし、却下。

最後に、「ファイル」とかが並んでる上部メニュー内に発火ボタンを追加する方法。
展開しない限り出てこないので邪魔にならない。
だからこれをやる。

こんな感じ

function onOpen(e) {
  SpreadsheetApp
  .getUi()
  .createAddonMenu()
  .addItem('アナウンス01', 'sampleFunction01')
  .addItem('アナウンス02', 'sampleFunction02')
  .addToUi();
}

function sampleFunction01() {
    Browser.msgBox('おはよう');
}
function sampleFunction02() {
    Browser.msgBox('おやすみ');
}

これにより上部メニュー「拡張機能」内に追加される。

.addItem()が肝。
複数のメニューを追加したいなら.addItem()を追加しまくればいい。

引数の内訳はこう。

.addItem('【ラベル名】', '【関数名】')

わかりやすいですね。

既存メニューの下層じゃなく、上部メニュー自体に追加する事もできる。

function onOpen(e) {
  const ui = SpreadsheetApp.getUi();
  const menu = ui.createMenu('sampleMenu');
  menu.addItem('アナウンス01', 'sampleFunction01');
  menu.addItem('アナウンス02', 'sampleFunction02');
  menu.addToUi();
}

function sampleFunction01() {
    Browser.msgBox('おはよう');
}
function sampleFunction02() {
    Browser.msgBox('おやすみ');
}

.createMenu()でメニュー名を設定してある。

これらは併記することもできる。

function onOpen(e) {
  SpreadsheetApp
  .getUi()
  .createAddonMenu()
  .addItem('アナウンス01', 'sampleFunction01')
  .addItem('アナウンス02', 'sampleFunction02')
  .addToUi();

  const ui = SpreadsheetApp.getUi();
  const menu = ui.createMenu('sampleMenu');
  menu.addItem('アナウンス01', 'sampleFunction01');
  menu.addItem('アナウンス02', 'sampleFunction02');
  menu.addToUi();
}

function sampleFunction01() {
    Browser.msgBox('おはよう');
}
function sampleFunction02() {
    Browser.msgBox('おやすみ');
}

似た内容だから、ベタ打ちと変数活用の例としても比較できますね。

以上。

コメント

タイトルとURLをコピーしました