スクリプトは、クリックしたときに 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] をクリックします。 - 画像または図形描画をもう一度クリックします。関数が実行されます。
Google サイトのスクリプトへのリンク
Apps Script の関数を Google サイトのリンクに割り当てることもできます(スクリプトがサイトにバインドされている場合に限ります)。次の例にその設定方法を示します。
- Google サイトで [サイトを管理] をクリックします。
- サイドバーで [Apps Scripts]、[新しいスクリプトを追加] の順にクリックし、サイトにバインドするスクリプトを作成します。
- スクリプト エディタでコードを削除し、下記のコードを貼り付けます。これにより、ユーザーがリンクをクリックするとメールが届きます。
function sitesLink() { var recipient = Session.getActiveUser().getEmail(); GmailApp.sendEmail(recipient, 'Email from your site', 'You clicked a link!'); }
- Google サイトに戻り、ページを編集します。リンクにするラベル(
Click me
など)を入力してテキストをハイライト表示し、[リンクを挿入] を選択します。 - 表示されたダイアログで、[Apps Script] をクリックし、作成した
sitesLink
関数をクリックします。[OK] をクリックします。 - ページの上部にある [保存] をクリックします。
- ページに追加したリンクをクリックします。
- ダイアログ ボックスが表示され、スクリプトには認証が必要であることが示されます。[OK] をクリックします。2 番目のダイアログ ボックスで、特定の Google サービス用の承認をリクエストします。注意事項をよく読み、[許可]、[閉じる] の順にクリックします。
- スクリプトが承認されたら、ページに追加したリンクをクリックします。関数が実行されます。メールをチェックして、自分で送信したメールを確認します。