スクリプトを使用すると、クリック時に Apps Script 関数を実行するユーザー インターフェース要素を追加することで、特定の Google サービスを拡張できます。最も一般的な例は、Google ドキュメント、スプレッドシート、スライド、フォームのカスタム メニュー項目からスクリプトを実行する方法ですが、Google スプレッドシートでは画像や図形描画をクリックしてスクリプト関数をトリガーすることもできます。
Google ドキュメント、スプレッドシート、スライド、フォームのカスタム メニュー
Apps Script では、Google ドキュメント、スプレッドシート、スライド、フォームに新しいメニューを追加できます。各メニュー項目はスクリプト内の関数に関連付けられます。(Google フォームでは、カスタム メニューはフォームを開いて変更した編集者にのみ表示され、フォームを開いて回答したユーザーには表示されません)。
スクリプトでメニューを作成できるのは、ドキュメント、スプレッドシート、フォームにバインドされている場合のみです。ユーザーがファイルを開くときにメニューを表示するには、onOpen()
関数内にメニューコードを記述します。
以下の例は、1 つのアイテムを含むメニューを追加し、その後にビジュアル セパレータ、別のアイテムを含むサブメニューを追加する方法を示しています。(Google スプレッドシートでは、新しいバージョンを使用している場合を除き、代わりに addMenu()
構文を使用する必要があります。また、サブメニューは使用できません)。ユーザーがいずれかのメニュー項目を選択すると、対応する関数でアラート ダイアログが開きます。開くことができるダイアログの種類について詳しくは、ダイアログとサイドバーに関するガイドをご覧ください。
function onOpen() {
var ui = SpreadsheetApp.getUi();
// Or DocumentApp 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 or FormApp.
.alert('You clicked the first menu item!');
}
function menuItem2() {
SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
.alert('You clicked the second menu item!');
}
ドキュメント、スプレッドシート、プレゼンテーション、フォームには、指定された名前のメニューを 1 つだけ含めることができます。同じスクリプトまたは別のスクリプトが同じ名前のメニューを追加すると、古いメニューが新しいメニューに置き換わります。ファイルが開いている間はメニューを削除できませんが、特定のプロパティが設定されている場合に今後メニューをスキップするように onOpen()
関数を作成できます。
Google スプレッドシートでのクリック可能な画像と図形描画
Google スプレッドシート内の画像や図形描画に Apps Script 関数を割り当てることもできます(スクリプトがスプレッドシートにバインドされている場合に限ります)。次の例はその設定方法を示しています。
- Google スプレッドシートで、メニュー項目の [拡張機能] > [Apps Script] を選択して、スプレッドシートにバインドするスクリプトを作成します。
スクリプト エディタ内のコードをすべて削除し、以下のコードを貼り付けます。
function showMessageBox() { Browser.msgBox('You clicked it!'); }
スプレッドシートに戻り、[挿入] > [画像] または [挿入] > [図形描画] を選択して、画像または図形描画を挿入します。
挿入した画像や図形描画をクリックします。右上に小さなプルダウン メニュー セレクタが表示されます。これをクリックして、[スクリプトを割り当て] を選択します。
表示されたダイアログ ボックスに、実行する Apps Script 関数の名前をかっこなしで入力します(この場合は
showMessageBox
)。[OK] をクリックします。画像または図形描画をもう一度クリックします。関数が実行されます。