Google Workspace のカスタム メニュー

スクリプトを使用すると、クリック時に Google Apps Script 関数を実行するユーザー インターフェース要素を追加して、特定の Google プロダクトを拡張できます。最も一般的な例は、Google ドキュメント、Google スプレッドシート、Google スライド、Google フォームのカスタム メニュー項目からスクリプトを実行することですが、スクリプト関数は、スプレッドシートの画像や図形描画をクリックすることでもトリガーできます。

ドキュメント、スプレッドシート、スライド、フォームのカスタム メニュー

Apps Script を使用すると、ドキュメント、スプレッドシート、スライド、フォームに新しいメニューを追加できます。各メニュー項目はスクリプト内の関数に関連付けられます。(フォームでは、カスタム メニューは、フォームを開いて変更する編集者にのみ表示され、フォームを開いて回答するユーザーには表示されません)。

メニューを作成できるのは、バインドされたスクリプトのみです。ユーザーがファイルを開いたときにメニューを表示するには、 関数内にメニューコードを記述します。onOpen

次の例は、1 つの項目を含むメニュー視覚的な区切り文字、別の項目を含むサブメニューを追加する方法を示しています。ユーザーがメニュー項目を選択すると、対応する関数によって アラートダイアログが開きます。開くことができるダイアログの種類について詳しくは、 ダイアログとサイドバーのガイドをご覧ください。

function onOpen() {
  const ui = SpreadsheetApp.getUi();
  // Or DocumentApp, SlidesApp or FormApp.
  ui.createMenu('Custom Menu')
      .addItem('First item', 'menuItem1')
      .addSeparator()
      .addSubMenu(ui.createMenu('Sub-menu')
          .addItem('Second item', 'menuItem2'))
      .addToUi();
}

function menuItem1() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
      .alert('You clicked the first menu item!');
}

function menuItem2() {
  SpreadsheetApp.getUi() // Or DocumentApp, SlidesApp or FormApp.
      .alert('You clicked the second menu item!');
}

ドキュメント、スプレッドシート、プレゼンテーション、フォームには、指定された名前のメニューを 1 つだけ含めることができます。同じスクリプトまたは別のスクリプトで同じ名前のメニューを追加すると、新しいメニューが古いメニューに置き換わります。ファイルが開いている間はメニューを削除できませんが、特定のプロパティが設定されている場合は、今後メニューをスキップするようにonOpen関数を記述できます。

エディタ アドオン にもメニュー項目を設定できますが、 定義方法には特別なルールがあります。

スプレッドシート内のクリック可能な画像と図形描画

スクリプトがスプレッドシートにバインドされている場合は、スプレッドシート内の画像や図形描画に Apps Script 関数を割り当てることもできます。次の例は、その設定方法を示しています。

  1. スプレッドシートにバインドされたスクリプトを作成するには、スプレッドシートで [拡張機能] > [Apps Script] を選択します。
  2. スクリプト エディタ内のコードを削除して、以下のコードを貼り付けます。
function showMessageBox() {
  SpreadsheetApp.getUi().alert('You clicked it!');
}
  1. スプレッドシートに戻り、[挿入 > 画像] または [挿入 > 図形描画] を選択して、画像または図形描画を挿入します。
  2. 画像または図形描画を挿入したら、クリックします。右上に小さなプルダウン メニュー セレクタが表示されます。クリックして [スクリプトを割り当てる] を選択します。
  3. 表示されたダイアログで、実行する Apps Script 関数の名前をかっこなしで入力します(この場合は showMessageBox)。[OK] をクリックします。
  4. 画像または図形描画をもう一度クリックします。関数が実行されます。

スクリプトの実行は、ウェブブラウザで画像または図形描画をクリックした場合にのみトリガーされます。 モバイルで画像または図形描画をクリックしても、スクリプトは実行されません。