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

Google Workspace アドオンを使用すると、Google ドキュメント、Google スプレッドシート、Google スライドなどのエディタ内にカスタマイズされたインターフェースを提供できます。これにより、ユーザーに関連性の高い情報を提供したり、タスクを自動化したり、サードパーティ システムをエディタに接続したりできます。

アドオンの UI にアクセスする

Google ドキュメント、Google スプレッドシート、Google スライドのユーザー インターフェースの Google Workspace クイック アクセス サイドパネルにアイコンが表示されている場合、エディタで Google Workspace アドオンを開くことができます。

Google Workspace アドオンは、次のインターフェースを表示できます。

  • ホームページ インターフェース: アドオンのマニフェストに、ユーザーがアドオンを開くエディタのトリガー EDITOR_NAME.homepageTrigger が含まれている場合、アドオンは、そのエディタ専用のホームページ カードを構築して返します。アドオンのマニフェストに、ユーザーが開いたエディタの EDITOR_NAME.homepageTrigger が含まれていない場合は、代わりに汎用のホームページ カードが表示されます。

  • REST API インターフェース: アドオンで REST API を使用している場合は、drive.file スコープを使用してドキュメントへのファイル単位のアクセスをリクエストするトリガーを含めることができます。権限が付与されると、EDITOR_NAME.onFileScopeGrantedTrigger という別のトリガーが実行され、ファイル固有のインターフェースが表示されます。

  • リンク プレビュー インターフェース: アドオンがサードパーティ サービスと統合されている場合は、サービスの URL からコンテンツをプレビューするカードを作成できます。

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

次の手順に沿って、エディタ用の Build Editor アドオン インターフェースを構築します。

  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.addonHasFileScopePermission フィールド、sheets.addonHasFileScopePermission フィールド、または slides.addonHasFileScopePermission フィールドのみが含まれます。アドオンに承認がある場合、イベント オブジェクトにはすべてのエディタ イベント オブジェクト フィールドが含まれます。

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

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