Google ドキュメント、Google スプレッドシート、Google フォームにバインドされた Google Apps Script プロジェクトでは、組み込みのアラート、プロンプト、トースト、ダイアログ、サイドバーなどの ユーザー インターフェース要素を表示できます。これらの要素には通常、カスタム HTML サービス コンテンツが含まれており、 メニュー項目から開かれることがよくあります。フォームでは、ユーザー インターフェース要素は、フォームを開いて変更する編集者にのみ表示され、回答者には表示されません。
通知ダイアログ

アラートは、ドキュメント、スプレッドシート、スライド、フォームのエディタ内に開く組み込みのダイアログです。メッセージと [OK]
ボタンが表示されます。タイトルと代替ボタンは省略可能です。ウェブブラウザ内のクライアントサイド JavaScript で
window.alert
を呼び出すのと似ています。
ダイアログが開いている間、アラートはサーバーサイド スクリプトを一時停止します。ユーザーがダイアログを閉じるとスクリプトは再開されますが、JDBC接続は一時停止後も維持されません。
次の例に示すように、ドキュメント、フォーム、
スライド、スプレッドシートではすべて、3 つのバリエーションで使用できる
Ui.alertメソッドを使用します。デフォルトの [OK] ボタンをオーバーライドするには、
Ui.ButtonSet 列挙型の値を buttons
引数として渡します。ユーザーがクリックしたボタンを評価するには、戻り値
を alert と Ui.Button 列挙型と比較します。
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show alert", "showAlert")
.addToUi();
}
function showAlert() {
const ui = SpreadsheetApp.getUi(); // Same variations.
const result = ui.alert(
"Please confirm",
"Are you sure you want to continue?",
ui.ButtonSet.YES_NO,
);
// Process the user's response.
if (result === ui.Button.YES) {
// User clicked "Yes".
ui.alert("Confirmation received.");
} else {
// User clicked "No" or X in the title bar.
ui.alert("Permission denied.");
}
}
プロンプト ダイアログ

プロンプトは、ドキュメント、スプレッドシート、スライド、フォームのエディタ内に開く組み込みのダイアログです。メッセージ、テキスト入力フィールド、[OK]
ボタンが表示されます。タイトルと代替ボタンは省略可能です。ウェブブラウザ内のクライアントサイド JavaScript で
window.prompt
を呼び出すのと似ています。
ダイアログが開いている間、プロンプトはサーバーサイド スクリプトを一時停止します。ユーザーがダイアログを閉じるとスクリプトは再開されますが、JDBC接続は一時停止後も維持されません。
次の例に示すように、ドキュメント、フォーム、
スライド、スプレッドシートではすべて、
Ui.prompt メソッドを使用します。これは
3 つのバリエーションで使用できます。デフォルトの [OK] ボタンをオーバーライドするには、
Ui.ButtonSet 列挙型の値を
buttons 引数として渡します。ユーザーのレスポンスを評価するには、promptの戻り値を取得し、PromptResponse.getResponseTextを呼び出してユーザーの入力を取得し、PromptResponse.getSelectedButtonの戻り値をUi.Button列挙型と比較します。
function onOpen() {
SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp.
.createMenu("Custom Menu")
.addItem("Show prompt", "showPrompt")
.addToUi();
}
function showPrompt() {
const ui = SpreadsheetApp.getUi(); // Same variations.
const result = ui.prompt(
"Let's get to know each other!",
"Please enter your name:",
ui.ButtonSet.OK_CANCEL,
);
// Process the user's response.
const button = result.getSelectedButton();
const text = result.getResponseText();
if (button === ui.Button.OK) {
// User clicked "OK".
ui.alert("Your name is " + text + ".");
} else if (button === ui.Button.CANCEL) {
// User clicked "Cancel".
ui.alert("I didn't get your name.");
} else if (button === ui.Button.CLOSE) {
// User clicked X in the title bar.
ui.alert("You closed the dialog.");
}
}
スプレッドシートのトースト
「トースト」は、スプレッドシート エディタの右下隅に表示される小さなダイアログ ウィンドウで、メッセージを表示しますが、スクリプトは一時停止しません。ユーザー インタラクションを必要としないステータス メッセージや更新情報を表示するのに適しています。
次の例に示すように、スプレッドシートではメソッド
Spreadsheet.toastを使用します。
トーストはスプレッドシートでのみ使用できます。
function showToast() {
SpreadsheetApp.getActiveSpreadsheet().toast("Task completed successfully.");
}
カスタム ダイアログ

カスタム ダイアログでは、ドキュメント、スプレッドシート、 スライド、フォームのエディタ内に HTML サービス ユーザー インターフェースを表示できます。
ダイアログが開いている間、カスタム ダイアログはサーバーサイド スクリプトを一時停止しません。 非同期であるため、ダイアログを開くサーバーサイド関数はすぐに終了します。カスタムダイアログからサーバーにデータを渡すには、
クライアントサイド コードで google.script API を使用します。
ダイアログは、HTML サービス インターフェースのクライアントサイドで
google.script.host.close
を呼び出すことで、自動的に閉じることができます。ダイアログは、他のインターフェースでは閉じることができません。ユーザーまたはダイアログ自体でのみ閉じることができます。
次の例に示すように、ドキュメント、フォーム、
スライド、スプレッドシートではすべて、メソッド
Ui.showModalDialog
を使用してダイアログを開きます。
Code.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show dialog', 'showDialog') .addToUi(); } function showDialog() { const html = HtmlService.createHtmlOutputFromFile('Page') .setWidth(400) .setHeight(300); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showModalDialog(html, 'My custom dialog'); }
Page.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
カスタム サイドバー

サイドバーでは、ドキュメント、フォーム、 スライド、スプレッドシートのエディタ内に HTML サービス ユーザー インターフェースを表示できます。
ダイアログが開いている間、サイドバーはサーバーサイド スクリプトを一時停止しません。 クライアントサイド コンポーネントは、HTML サービス インターフェースの google.script API を使用して、サーバーサイド スクリプトに非同期呼び出しを行うことができます。
サイドバーは、HTML サービス インターフェースのクライアントサイドで
google.script.host.close
を呼び出すことで、自動的に閉じることができます。サイドバーは、他のインターフェースでは閉じることができません。ユーザーまたはサイドバー自体でのみ閉じることができます。
次の例に示すように、ドキュメント、フォーム、
スライド、スプレッドシートではすべて、メソッド
Ui.showSidebarを使用して
サイドバーを開きます。
Code.gs
function onOpen() { SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .createMenu('Custom Menu') .addItem('Show sidebar', 'showSidebar') .addToUi(); } function showSidebar() { const html = HtmlService.createHtmlOutputFromFile('Page') .setTitle('My custom sidebar'); SpreadsheetApp.getUi() // Or DocumentApp or SlidesApp or FormApp. .showSidebar(html); }
Page.html
Hello, world! <input type="button" value="Close" onclick="google.script.host.close()" />
ファイルを開くダイアログ
Google Picker は、ユーザーが Google ドライブ ファイルを選択または アップロードできるようにする JavaScript API です。HTML サービスで Google Picker ライブラリを使用して、ユーザーが既存のファイルを選択したり、新しいファイルをアップロードしたりできるカスタム ダイアログを作成し、選択内容をスクリプトに渡します。
要件
Google Apps Script で Google Picker を使用するには、次の 要件を満たす必要があります。
Google Picker の環境 を設定します。
スクリプト プロジェクトでは、標準の Google Cloud プロジェクトを使用する必要があります。
同じクラウド プロジェクト番号を
PickerBuilder.setAppIdに渡します(drive.fileスコープを使用する場合)。Apps Script プロジェクト マニフェストで、Google Picker API で必要な認証 スコープを指定する必要があります。これにより、
ScriptApp.getOAuthTokenがPickerBuilder.setOauthtokenの正しいトークンを返します。PickerBuilder.setDeveloperKeyで設定された API キーを Apps Script に制限します。[アプリケーションの制限] で、次の操作を行います。- [HTTP リファラー(ウェブサイト)] を選択します。
- [ウェブサイトの制限] で [項目を追加] をクリックします。
- [リファラー] をクリックし、
*.google.comと入力します。 - 別の項目を追加し、リファラーとして
*.googleusercontent.comと入力します。 - [完了] をクリックします。
PickerBuilder.setOriginを呼び出します。
例
次の例は、Apps Script での Google Picker を示しています。