エディタ アドオンのダイアログとサイドバー
コレクションでコンテンツを整理
必要に応じて、コンテンツの保存と分類を行います。
ほとんどのエディタ アドオンでは、ダイアログ ウィンドウとサイドバー パネルが主なアドオンのユーザー インターフェースになります。どちらも標準の HTML と CSS を使用して完全にカスタマイズできます。また、Apps Script のクライアント サーバー通信モデルを使用して、ユーザーがサイドバーやダイアログを操作したときに Apps Script 関数を実行できます。アドオンでは複数のサイドバーとダイアログを定義できますが、一度に表示できるのは 1 つだけです。
アドオン インターフェースでユーザーが選択を行うまでエディタを操作できないようにする場合は、ダイアログを使用します。それ以外の場合は、サイドバーを使用します。
ダイアログ
ダイアログは、メインのエディタ コンテンツに重ねて表示されるウィンドウ パネルです。Apps Script のダイアログはモーダルです。ダイアログが開いている間、ユーザーはエディタ インターフェースの他の要素を操作できません。ダイアログのコンテンツとサイズをカスタマイズできます。
アドオンのダイアログは、Apps Script のカスタム ダイアログと同じ方法で作成します。一般的な推奨手順は次のとおりです。
- ダイアログの HTML 構造、CSS、クライアントサイドの JavaScript の動作を定義するスクリプト プロジェクト ファイルを作成します。ダイアログを定義する際は、エディタ アドオンのスタイル ガイドラインを参照してください。
- ダイアログを開くサーバーサイド コードで、
HtmlService.createHtmlOutputFromFile(filename)
を呼び出して、ダイアログを表す HtmlOutput
オブジェクトを作成します。また、テンプレート HTML を使用している場合は、HtmlService.createTemplateFromFile(filename)
を呼び出してテンプレートを生成し、HtmlTemplate.evaluate()
を呼び出して HtmlOutput
オブジェクトに変換することもできます。
Ui.showModalDialog(htmlOutput, dialogTitle)
を呼び出して、その HtmlOutput
を使用してダイアログを表示します。
ダイアログが開いている間、サーバーサイドのスクリプトは一時停止されません。クライアントサイドの JavaScript は、google.script.run()
と関連するハンドラ関数を使用して、サーバーサイドに非同期呼び出しを行うことができます。詳細については、クライアントとサーバー間の通信をご覧ください。
ファイルを開くダイアログ
ファイルを開くダイアログは、ユーザーが Google ドライブからファイルを選択できる事前構築済みのダイアログです。ファイルを開くダイアログは、設計しなくてもアドオンに追加できますが、追加の構成が必要です。Google Picker API を有効にするには、アドオンの Cloud Platform プロジェクトへのアクセス権も必要です。
詳しくは、ファイルを開くダイアログをご覧ください。
サイドバーは、エディタ インターフェースの右側に表示されるパネルで、最も一般的なアドオン インターフェースです。ダイアログとは異なり、サイドバーが開いている間もエディタ インターフェースの他の要素を操作できます。サイドバーの幅は固定されていますが、コンテンツはカスタマイズできます。
アドオンのサイドバーは、Apps Script のカスタム サイドバーと同じ方法で作成します。一般的な推奨手順は次のとおりです。
- サイドバーの HTML 構造、CSS、クライアントサイドの JavaScript の動作を定義するスクリプト プロジェクト ファイルを作成します。サイドバーを定義する際は、エディタ アドオンのスタイル ガイドラインを参照してください。
サイドバーを開くサーバーサイド コードで、HtmlService.createHtmlOutputFromFile(filename)
を呼び出して、サイドバーを表す HtmlOutput
オブジェクトを作成します。また、テンプレート HTML を使用している場合は、HtmlService.createTemplateFromFile(filename)
を呼び出してテンプレートを生成し、HtmlTemplate.evaluate()
を呼び出して HtmlOutput
オブジェクトに変換することもできます。
Ui.showSidebar(htmlOutput)
を呼び出して、その HtmlOutput
を使用してサイドバーを表示します。
サイドバーが開いている間、サーバーサイドのスクリプトは一時停止されません。クライアントサイドの JavaScript は、google.script.run()
と関連するハンドラ関数を使用して、サーバーサイドに非同期呼び出しを行うことができます。詳細については、クライアントとサーバー間の通信をご覧ください。
特に記載のない限り、このページのコンテンツはクリエイティブ・コモンズの表示 4.0 ライセンスにより使用許諾されます。コードサンプルは Apache 2.0 ライセンスにより使用許諾されます。詳しくは、Google Developers サイトのポリシーをご覧ください。Java は Oracle および関連会社の登録商標です。
最終更新日 2025-08-21 UTC。
[null,null,["最終更新日 2025-08-21 UTC。"],[[["\u003cp\u003eEditor add-ons primarily use customizable dialog windows and sidebar panels for user interfaces, built with HTML, CSS, and Apps Script.\u003c/p\u003e\n"],["\u003cp\u003eDialogs are modal windows, overlaying editor content and preventing interaction until a choice is made, while sidebars allow continued editor interaction.\u003c/p\u003e\n"],["\u003cp\u003eBoth dialogs and sidebars are created using HtmlService to define their structure and displayed using Ui methods.\u003c/p\u003e\n"],["\u003cp\u003eFile-open dialogs are pre-built for selecting files from Google Drive but need extra configuration and Cloud Platform project access.\u003c/p\u003e\n"],["\u003cp\u003eAdd-on sidebars have a fixed width of 300 pixels and appear on the right of the editor, enabling user interaction with other editor elements.\u003c/p\u003e\n"]]],["Editor add-ons utilize customizable dialogs and sidebars as user interfaces, built with HTML, CSS, and Apps Script. Dialogs, which overlay the editor, prevent user interaction until closed, created via `HtmlService` and displayed with `Ui.showModalDialog`. Sidebars, residing on the editor's right, allow continued editor interaction and are created and displayed similarly, using `Ui.showSidebar`. Both interfaces facilitate client-server communication through `google.script.run()` for asynchronous interactions. File-open dialogs offer pre-built file selection.\n"],null,["# Dialogs and sidebars for Editor add-on\n\nFor most [Editor add-on](/workspace/add-ons/concepts/types#editor_add-ons),\ndialog windows and sidebar panels are the primary add-on user interfaces.\nBoth are fully customizable using standard HTML and CSS, and you can use\nApps Script's\n[client-server communication model](/apps-script/guides/html/communication)\nto run Apps Script functions when the user interacts with the sidebar or dialog.\nYour add-on can define multiple sidebars and dialogs, but the add-on can display\nonly one at a time.\n\nWhen you want to prevent the user from interacting with the editor until they\nmake some choice in the add-on interface, use a dialog; otherwise use a\nsidebar.\n\nDialogs\n-------\n\n*Dialogs* are window panels that overlay the primary editor content. Apps Script\ndialogs are modal; while they are opened the user can't interact with the\nother elements of the editor interface. You can customize the content and size\nof dialogs.\n\nYou build add-on dialogs the same way as Apps Script\n[custom dialogs](/apps-script/guides/dialogs#custom_dialogs); the general\nrecommended procedure is the following:\n\n1. Create a script project file that defines your dialog's HTML structure, CSS, and client-side JavaScript behavior. When defining the dialog, refer to the [Editor add-on style guidelines](/workspace/add-ons/guides/editor-style#dialogs).\n2. In your server-side code where you want the dialog to open, call [`HtmlService.createHtmlOutputFromFile(filename)`](/apps-script/reference/html/html-service#createhtmloutputfromfilefilename) to create an [`HtmlOutput`](/apps-script/reference/html/html-output) object representing the dialog. Alternatively, if you are using [templated HTML](/apps-script/guides/html/templates) you can call [`HtmlService.createTemplateFromFile(filename)`](/apps-script/reference/html/html-service#createtemplatefromfilefilename) to generate a template and then [`HtmlTemplate.evaluate()`](/apps-script/reference/html/html-template#evaluate()) to convert it to an [`HtmlOutput`](/apps-script/reference/html/html-output) object.\n3. Call [`Ui.showModalDialog(htmlOutput, dialogTitle)`](/apps-script/reference/base/ui#showModalDialog(Object,String)) to display the dialog using that [`HtmlOutput`](/apps-script/reference/html/html-output).\n\nDialogs don't suspend the server-side script while they are open. The\nclient-side JavaScript can make asynchronous calls to the server-side\nusing [`google.script.run()`](/apps-script/guides/html/reference/run) and\nassociated handler functions. For more details, see\n[Client-to-server communication](/apps-script/guides/html/communication).\n\n### File-open dialogs\n\n*File-open dialogs* are pre-built dialogs that let your users select files\nfrom their Google Drive. You can add a file-open dialog to your add-on without\nneeding to design it, but it requires some additional configuration. You also\nrequire access to the add-on's\n[Cloud Platform project](/apps-script/guides/cloud-platform-projects)\nin order to enable the Google Picker API.\n\nFor full details, see [File-open dialogs](/apps-script/guides/dialogs#file-open_dialogs).\n\nSidebars\n--------\n\n*Sidebars* are panels that appear in the right of the editor interface, and\nare the most common type of add-on interface. Unlike dialogs, you can continue\nto interact with the other elements of the editor interface while a sidebar is\nopen. Sidebars have a fixed width, but you can customize their content.\n\nYou build add-on sidebars the same way as Apps Script\n[custom sidebars](/apps-script/guides/dialogs#custom_sidebars); the general\nrecommended procedure is the following:\n\n1. Create a script project file that defines your sidebar's HTML structure, CSS, and client-side JavaScript behavior. When defining the sidebar, refer to the [Editor add-on style guidelines](/workspace/add-ons/guides/editor-style#sidebars).\n2. In your server-side code where you want the sidebar to open, call\n [`HtmlService.createHtmlOutputFromFile(filename)`](/apps-script/reference/html/html-service#createhtmloutputfromfilefilename)\n to create an [`HtmlOutput`](/apps-script/reference/html/html-output)\n object representing the sidebar. Alternatively, if you are using\n [templated HTML](/apps-script/guides/html/templates) you can call\n [`HtmlService.createTemplateFromFile(filename)`](/apps-script/reference/html/html-service#createtemplatefromfilefilename)\n to generate a template and then\n [`HtmlTemplate.evaluate()`](/apps-script/reference/html/html-template#evaluate())\n to convert it to an\n [`HtmlOutput`](/apps-script/reference/html/html-output) object.\n\n | **Note:** Add-on sidebars have a fixed width of 300 pixels that you can't alter by calling [`HtmlOutput.setWidth(width)`](/apps-script/reference/html/html-output#setwidthwidth).\n3. Call [`Ui.showSidebar(htmlOutput)`](/apps-script/reference/base/ui#showSidebar(Object))\n to display the sidebar using that\n [`HtmlOutput`](/apps-script/reference/html/html-output).\n\nSidebars don't suspend the server-side script while they are open. The\nclient-side JavaScript can make asynchronous calls to the server-side\nusing [`google.script.run()`](/apps-script/guides/html/reference/run) and\nassociated handler functions. For more details, see\n[Client-to-server communication](/apps-script/guides/html/communication)."]]