Google Workspace アドオンを使用すると、Google ドキュメント、スプレッドシート、スライドなどのエディタ内でカスタマイズされたインターフェースを提供できます。これにより、ユーザーに関連情報を提供したり、タスクを自動化したり、サードパーティ システムをエディタに接続したりできます。
アドオン UI へのアクセス
Google ドキュメント、スプレッドシート、スライドのユーザー インターフェースの右側にある 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
オブジェクトの配列を返す必要があります。- 他のカードと同様に、インターフェースにウィジェットのインタラクティビティを提供するために使用されるコールバック関数を実装する必要があります。たとえば、インターフェースにボタンを追加する場合は、ボタンにアクションを適用し、ボタンがクリックされたときに実行されるコールバック関数を実装する必要があります。
次の例は、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
などのトリガー関数に渡されます。トリガー関数は、イベント オブジェクトの情報を使用して、アドオンカードの作成方法やアドオンの動作を制御する方法を決定します。
イベント オブジェクトの完全な構造については、イベント オブジェクトをご覧ください。
アドオンのホストアプリとしてエディタが機能している場合、イベント オブジェクトには、クライアント情報を伝送する ドキュメント、スプレッドシート、スライドのイベント オブジェクト フィールドが含まれます。
アドオンに現在のユーザーまたはドキュメントに対する 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" }, ... }