Google エディタ インターフェースの構築

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 のコンテンツをプレビューするカードを作成できます。

エディタ アドオンのインターフェースを構築する

次の手順に沿って、エディタ用のビルド エディタ アドオン インターフェースを作成します。

  1. アドオン スクリプト プロジェクトのマニフェストに、適切な addOns.commonaddOns.docsaddOns.sheetsaddOns.slides フィールドを追加します。
  2. 必要なエディタ スコープをスクリプト プロジェクトのマニフェストに追加します。
  3. エディタ固有のホームページを提供している場合は、EDITOR_NAME.homepageTrigger 関数を実装してインターフェースを構築します。そうでない場合は、common.homepageTrigger インターフェースを使用して、ホストアプリの共通ホームページを構築します。
  4. REST API を使用する場合は、drive.file スコープの認可フローと EDITOR_NAME.onFileScopeGrantedTrigger トリガー関数を実装して、開いているファイルに固有のインターフェースを表示します。詳細については、REST API インターフェースをご覧ください。
  5. サードパーティ サービスからリンク プレビューを構成する場合は、https://www.googleapis.com/auth/workspace.linkpreview スコープ認証フローと linkPreviewTriggers 関数を実装します。詳細については、リンク プレビュー インターフェースをご覧ください。
  6. ボタンのクリックなど、ユーザーの UI 操作に応答するために必要な関連するコールバック関数を実装します。

エディタのホームページ

アドオンのホームページを構成する単一の Card または Card オブジェクトの配列を構築して返すホームページ トリガー関数を、アドオンのスクリプト プロジェクトで指定する必要があります。

ホームページ トリガー関数には、クライアントのプラットフォームなどの情報を含むイベント オブジェクトがパラメータとして渡されます。イベント オブジェクトのデータを使用して、ホームページの構築をカスタマイズできます。

共通のホームページを表示することも、ユーザーがアドオンを開いたエディタに固有のホームページを表示することもできます。

共通のホームページを表示する

アドオンの共通ホームページをエディタに表示するには、アドオンのマニフェストに適切なエディタ フィールド(addOns.docsaddOns.sheetsaddOns.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 など)に置き換えます。

  1. マニフェストの適切なエディタ セクションに EDITOR_NAME.onFileScopeGrantedTrigger を含めます。たとえば、このインターフェースを Google スプレッドシートで作成する場合は、"sheets" セクションにトリガーを追加します。
  2. EDITOR_NAME.onFileScopeGrantedTrigger セクションで指定された関数を実装します。この関数は、イベント オブジェクトを引数として受け取り、単一の Card オブジェクトまたは Card オブジェクトの配列を返す必要があります。
  3. 他のカードと同様に、インターフェースのウィジェットのインタラクティビティを提供するために使用されるコールバック関数を実装する必要があります。たとえば、インターフェースにボタンを含める場合は、ボタンに 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.homepageTriggerEDITOR_NAME.onFileScopeGrantedTrigger などのトリガー関数に渡されます。トリガー関数は、イベント オブジェクトの情報を使用して、アドオンカードの作成方法やアドオンの動作の制御方法を決定します。

イベント オブジェクトの完全な構造については、イベント オブジェクトをご覧ください。

エディタがアドオンの動作ホストアプリの場合、イベント オブジェクトには、クライアント情報を伝達する DocsSheets、または Slides のイベント オブジェクト フィールドが含まれます。

アドオンに現在のユーザーまたはドキュメントに対する drive.file スコープの承認がない場合、イベント オブジェクトには docs.addonHasFileScopePermissionsheets.addonHasFileScopePermissionslides.addonHasFileScopePermission フィールドのみが含まれます。アドオンに承認がある場合、イベント オブジェクトにはすべてのエディタ イベント オブジェクト フィールドが含まれます。

次の例は、sheets.onFileScopeGrantedTrigger 関数に渡されるエディタ イベント オブジェクトを示しています。このアドオンには、現在のドキュメントに対する drive.file スコープの承認があります。

`        {
          "commonEventObject": { ... },
          "sheets": {
            "addonHasFileScopePermission": true,
            "id":"A_24Q3CDA23112312ED52",
            "title":"How to get started with Sheets"
          },
          ...
        }