Google Workspace アドオンを使用すると、Google ドキュメント、スプレッドシート、スライドなどのエディタ内にカスタマイズされたインターフェースを提供できます。これにより、ユーザーに関連情報を提示したり、タスクを自動化したり、サードパーティ システムをエディタに接続したりできます。
アドオン UI へのアクセス
Google Workspace アドオンのアイコンが、ドキュメント、スプレッドシート、スライドのユーザー インターフェースの右側にある Google Workspace クイック アクセス サイドパネルに表示されている場合は、エディタで Google Workspace アドオンを開くことができます。
Google Workspace アドオンは、次のインターフェースを表示できます。
ホームページ インターフェース: アドオンのマニフェストに、ユーザーがアドオンを開くエディタのトリガー
EDITOR_NAME.homepageTrigger
が含まれている場合、アドオンは、そのエディタ専用のホームページ カードを構築して返します。アドオンのマニフェストに、ユーザーが開いたエディタのEDITOR_NAME.homepageTrigger
が含まれていない場合は、代わりに汎用のホームページ カードが表示されます。REST API インターフェース: アドオンで REST API を使用している場合は、
drive.file
スコープを使用してドキュメントへのファイルごとのアクセスをリクエストするトリガーを含めることができます。権限が付与されると、EDITOR_NAME.onFileScopeGrantedTrigger
という別のトリガーが実行され、ファイル固有のインターフェースが表示されます。リンク プレビュー インターフェース: アドオンがサードパーティ サービスと統合されている場合は、サービスの URL のコンテンツをプレビューするカードを作成できます。
エディタ アドオンのインターフェースを構築する
次の手順に沿って、エディタ用のビルド エディタ アドオン インターフェースを作成します。
- アドオン スクリプト プロジェクトのマニフェストに、適切な
addOns.common
、addOns.docs
、addOns.sheets
、addOns.slides
フィールドを追加します。 - 必要なエディタ スコープをスクリプト プロジェクトのマニフェストに追加します。
- エディタ固有のホームページを提供している場合は、
EDITOR_NAME.homepageTrigger
関数を実装してインターフェースを構築します。そうでない場合は、common.homepageTrigger
インターフェースを使用して、ホストアプリの共通ホームページを構築します。 - REST API を使用する場合は、
drive.file
スコープの認可フローとEDITOR_NAME.onFileScopeGrantedTrigger
トリガー関数を実装して、開いているファイルに固有のインターフェースを表示します。詳細については、REST API インターフェースをご覧ください。 - サードパーティ サービスからリンク プレビューを構成する場合は、
https://www.googleapis.com/auth/workspace.linkpreview
スコープ認証フローとlinkPreviewTriggers
関数を実装します。詳細については、リンク プレビュー インターフェースをご覧ください。 - ボタンのクリックなど、ユーザーの UI 操作に応答するために必要な関連するコールバック関数を実装します。
エディタのホームページ
アドオンのホームページを構成する単一の Card
または Card
オブジェクトの配列を構築して返すホームページ トリガー関数を、アドオンのスクリプト プロジェクトで指定する必要があります。
ホームページ トリガー関数には、クライアントのプラットフォームなどの情報を含むイベント オブジェクトがパラメータとして渡されます。イベント オブジェクトのデータを使用して、ホームページの構築をカスタマイズできます。
共通のホームページを表示することも、ユーザーがアドオンを開いたエディタに固有のホームページを表示することもできます。
共通のホームページを表示する
アドオンの共通ホームページをエディタに表示するには、アドオンのマニフェストに適切なエディタ フィールド(addOns.docs
、addOns.sheets
、addOns.slides
など)を含めます。
次の例は、Google Workspace アドオンのマニフェストの addons
部分を示しています。このアドオンはドキュメント、スプレッドシート、スライドを拡張し、各ホストアプリに共通のホームページを表示します。
"addOns": { "common": { "name": "Translate", "logoUrl": "https://www.gstatic.com/images/branding/product/1x/translate_24dp.png", "layoutProperties": { "primaryColor": "#2772ed" }, "homepageTrigger": { "runFunction": "onHomepage" } }, "docs": {}, "sheets": {}, "slides": {} } }
エディタ専用のホームページを表示する
エディタ固有のホームページを表示するには、アドオン マニフェストに EDITOR_NAME.homepageTrigger
を追加します。
次の例は、Google Workspace アドオン マニフェストの addons
部分を示しています。ドキュメント、スプレッドシート、スライドでアドオンが有効になります。ドキュメントとスライドでは共通のホームページが表示され、スプレッドシートでは独自のホームページが表示されます。コールバック関数 onSheetsHomepage
は、スプレッドシート固有のホームページ カードを構築します。
"addOns": { "common": { "name": "Translate", "logoUrl": "https://www.gstatic.com/images/branding/product/1x/translate_24dp.png", "layoutProperties": { "primaryColor": "#2772ed" }, "homepageTrigger": { "runFunction": "onHomepage" } }, "docs": {}, "slides": {}, "sheets": { "homepageTrigger": { "runFunction": "onSheetsHomepage" }, } }
REST API インターフェース
Google Sheets API などの REST API をアドオンで使用している場合は、onFileScopeGrantedTrigger
関数を使用して、エディタ ホストアプリで開いているファイルに固有の新しいインターフェースを表示できます。
onFileScopeGrantedTrigger
関数を使用するには、drive.file
スコープの認可フローを含める必要があります。drive.file
スコープをリクエストする方法については、現在のドキュメントのファイル アクセスをリクエストするをご覧ください。
ユーザーが drive.file
スコープを付与すると、EDITOR_NAME.onFileScopeGrantedTrigger.runFunction
がトリガーされます。トリガーが起動すると、アドオン マニフェストの EDITOR_NAME.onFileScopeGrantedTrigger.runFunction
フィールドで指定されたコンテキスト トリガー関数が実行されます。
いずれかのエディタの REST API インターフェースを作成する手順は次のとおりです。EDITOR_NAME
は、使用するエディタ ホストアプリ(sheets.onFileScopeGrantedTrigger
など)に置き換えます。
- マニフェストの適切なエディタ セクションに
EDITOR_NAME.onFileScopeGrantedTrigger
を含めます。たとえば、このインターフェースを Google スプレッドシートで作成する場合は、"sheets"
セクションにトリガーを追加します。 EDITOR_NAME.onFileScopeGrantedTrigger
セクションで指定された関数を実装します。この関数は、イベント オブジェクトを引数として受け取り、単一のCard
オブジェクトまたはCard
オブジェクトの配列を返す必要があります。- 他のカードと同様に、インターフェースのウィジェットのインタラクティビティを提供するために使用されるコールバック関数を実装する必要があります。たとえば、インターフェースにボタンを含める場合は、ボタンに Action を関連付け、ボタンがクリックされたときに実行されるコールバック関数を実装する必要があります。
次の例は、Google Workspace アドオン マニフェストの addons
部分を示しています。アドオンは REST API を使用するため、Google スプレッドシート用に onFileScopeGrantedTrigger
が含まれています。ユーザーが drive.file
スコープを付与すると、コールバック関数 onFileScopeGrantedSheets
がファイル固有のインターフェースを構築します。
"addOns": { "common": { "name": "Productivity add-on", "logoUrl": "https://www.gstatic.com/images/icons/material/system_gm/1x/work_outline_black_18dp.png", "layoutProperties": { "primaryColor": "#669df6", "secondaryColor": "#ee675c" } }, "sheets": { "homepageTrigger": { "runFunction": "onEditorsHomepage" }, "onFileScopeGrantedTrigger": { "runFunction": "onFileScopeGrantedSheets" } }
サードパーティ サービスのリンク プレビュー インターフェース
サードパーティ サービスのリンク プレビューを有効にするには、アドオンのマニフェストでリンク プレビューを構成し、プレビュー カードを返す関数を作成する必要があります。ユーザー認証が必要なサービスの場合、関数で認証フローも呼び出す必要があります。
リンク プレビューをオンにする手順については、スマートチップを使用してリンクをプレビューするをご覧ください。
イベント オブジェクト
イベント オブジェクトが作成され、EDITOR_NAME.homepageTrigger
や EDITOR_NAME.onFileScopeGrantedTrigger
などのトリガー関数に渡されます。トリガー関数は、イベント オブジェクトの情報を使用して、アドオンカードの作成方法やアドオンの動作の制御方法を決定します。
イベント オブジェクトの完全な構造については、イベント オブジェクトをご覧ください。
エディタがアドオンの動作ホストアプリの場合、イベント オブジェクトには、クライアント情報を伝達する Docs、Sheets、または Slides のイベント オブジェクト フィールドが含まれます。
アドオンに現在のユーザーまたはドキュメントに対する drive.file
スコープの承認がない場合、イベント オブジェクトには docs.addonHasFileScopePermission
、sheets.addonHasFileScopePermission
、slides.addonHasFileScopePermission
フィールドのみが含まれます。アドオンに承認がある場合、イベント オブジェクトにはすべてのエディタ イベント オブジェクト フィールドが含まれます。
次の例は、sheets.onFileScopeGrantedTrigger
関数に渡されるエディタ イベント オブジェクトを示しています。このアドオンには、現在のドキュメントに対する drive.file
スコープの承認があります。
` { "commonEventObject": { ... }, "sheets": { "addonHasFileScopePermission": true, "id":"A_24Q3CDA23112312ED52", "title":"How to get started with Sheets" }, ... }