Google カレンダーのインターフェースを構築する

Google Workspace アドオンは、ユーザーがカレンダーやカレンダーの予定を表示または編集するときに、カスタマイズされたインターフェースを提供できます。これにより、ユーザーに関連性の高い追加情報を提供したり、タスクを自動化したり、サードパーティ システムをカレンダーに接続したりできます。

カレンダー用の Google Workspace アドオンのインターフェースを構築する際に、ホームページを指定できます。複数のホストで同じホームページを使用することも、カレンダー専用のホームページをデザインすることもできます。

アドオンでは、ユーザーがカレンダーの予定を開いたときに表示されるインターフェースを定義することもできます。

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

UI は、コンテキストに応じてさまざまな方法で表示できます。たとえば、アドオンはホームページ インターフェース、カレンダーの予定インターフェース、添付ファイル選択インターフェース、またはこれら 3 つすべてを定義できます。

  • ユーザーがカレンダー ビューでアドオン アイコンをクリックすると、アドオンは対応する calendar.homepageTrigger 関数(存在する場合)を実行します。この関数は、表示するホームページ カードをビルドしてカレンダーに返します。calendar.homepageTrigger 関数が定義されていない場合は、代わりに汎用のホームページ カードが表示されます。
  • ユーザーがカレンダーの予定を開いてアドオン アイコンをクリックした場合、またはユーザーが予定を開いたときにアドオンが開いている場合、アドオンは対応する eventOpenTrigger 関数(存在する場合)を実行します。この関数は、アドオンのカレンダーの予定インターフェースを構築し、表示のためにカレンダーに返します。
  • アドオンが eventAttachmentTrigger 関数を定義している場合、ユーザーがカレンダーの予定を編集中に [添付ファイルを追加] をクリックすると、アドオンが添付ファイル プロバイダとして表示されます。アドオンが選択されると、eventAttachmentTrigger 関数がアドオンの添付ファイル選択インターフェースを構築し、表示のためにカレンダーに返します。

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

UI を構築する手順は次のとおりです。次の手順に沿って、Google Workspace アドオンでカレンダーを拡張できます。

  1. アドオンにカレンダー専用のホームページが必要かどうかを決定します。また、ユーザーがカレンダーの予定を編集しているときにカスタム インターフェースを提供するかどうかも決定します。
  2. 必要なスコープを含め、アドオン スクリプト プロジェクトのマニフェストに適切な addOns.common フィールドと addOns.calendar フィールドを追加します。
  3. カレンダー固有のホームページを提供している場合は、calendar.homepageTrigger 関数を実装してこのインターフェースを構築します。複数のホスト アプリケーションに common.homepageTrigger インターフェースを使用することもできます。
  4. カレンダー イベント インターフェースを提供している場合は、このインターフェースを構築する calendar.eventOpenTrigger 関数を実装します。詳しくは、カレンダーのイベント インターフェースを拡張するをご覧ください。
  5. ボタンのクリックなど、ユーザーの UI 操作に応答するために必要な関連するコールバック関数を実装します。

カレンダーのホームページ

アドオンは、Google Workspace アドオンのホームページの表示をサポートしています。カレンダーにアドオンの共通ホームページを表示するには、アドオンのマニフェストに addOns.calendar フィールドがあることを確認します。

または、アドオン マニフェストに calendar.homepageTrigger を追加して、カレンダー固有のホームページを提供します。

いずれの場合も、アドオンのスクリプト プロジェクトでホームページ トリガー関数の名前を指定する必要があります。この関数は、必要に応じてカレンダーのホームページをビルドするために自動的に呼び出されます。この関数を実装して、ホームページを構成する単一の Card または Card オブジェクトの配列を構築して返します。ホームページ トリガー関数には、クライアントのプラットフォームなどの一般的な情報を含むイベント オブジェクトがパラメータとして渡されます。イベント オブジェクト データを使用して、ホームページの構成を調整します。

カレンダーの予定インターフェースを拡張する

カレンダーは、ユーザーがカレンダーの予定を編集するときに表示するインターフェース(ある場合)を決定するために、コンテキスト トリガーを使用します。トリガーが起動すると、アドオン マニフェストの calendar.eventOpenTrigger フィールドで指定されたコンテキスト トリガー関数が実行されます。

calendar.eventOpenTrigger フィールドで指定された関数を実装します。この関数は、イベント オブジェクトを引数として受け取り、ユーザーがイベントを開いている間にカレンダーに表示する 1 つの Card オブジェクトまたは Card オブジェクトの配列を返す必要があります。

イベント オブジェクト

ユーザーがカレンダーの予定を開くと、イベント オブジェクトが作成され、calendar.eventOpenTrigger コンテキスト トリガー関数に渡されます。トリガー関数は、このイベント オブジェクトの情報を使用して、アドオンカードの作成方法やアドオンの動作の制御方法を決定できます。イベント オブジェクトは、アドオンが最初に開かれたときや、ユーザーがインタラクティブ ウィジェットをクリックまたは選択したときにも作成され、homepageTrigger 関数に渡されます。

イベント オブジェクトの完全な構造については、イベント オブジェクトをご覧ください。カレンダーがアドオンのホストアプリとして機能している場合、コンテキスト トリガーとウィジェットのインタラクション イベント オブジェクトには、カレンダー固有のクライアント情報を保持するカレンダー イベント オブジェクト フィールドが含まれます。

カレンダーの予定を更新する

ユーザーがカレンダーの予定を開いて編集したときに起動するコンテキスト calendar.eventOpenTrigger に加えて、ユーザーがカレンダーの予定を更新して保存したときに起動する calendar.eventUpdateTrigger を定義することもできます。このトリガーは、ユーザーが次の編集を 1 つ以上行った場合にのみ起動します。

  • 1 人以上の参加者を追加します。
  • 1 人以上の参加者を削除します。
  • 別の会議ソリューションを追加または切り替えます。

このトリガーが起動すると、calendar.eventUpdateTrigger マニフェスト フィールドで指定されたトリガー関数が実行されます。この関数は、カレンダーの予定の編集内容が保存される前に実行されます。

通常、calendar.eventUpdateTrigger は次の 1 つ以上の処理を行うために使用されます。

  • ユーザーがカレンダーの予定を変更したときに、アドオンのカレンダーの予定インターフェースを更新します。
  • カレンダーの予定データを、カレンダーに接続されている会議システムなどのサードパーティ システムと同期します。

アドオンでカレンダーの予定のデータ(参加者リストなど)を調整する必要がある場合は、アドオンの calendar.currentEventAccess マニフェスト フィールドを WRITE または READ_WRITE に設定します。また、アドオンに https://www.googleapis.com/auth/calendar.addons.current.event.write スコープも必要です。

会議ソリューションを追加する

サードパーティ製会議システムを管理している場合は、会議ソリューションを追加してカレンダーと統合できます。この機能は、以前はカレンダーの会議用アドオンとしてベータ版で提供されていました。

会議ソリューションは、ユーザーがカレンダーの予定に添付できるサードパーティの会議オプションを表します。サードパーティの会議の概要に関するドキュメントでは、新しい会議ソリューションを追加するアドオンを構築する方法について詳しく説明しています。このタイプの拡張機能の UI を構築する必要はありません。追加されたソリューションは、カレンダーの予定 UI のプルダウン メニューにオプションとして表示されます。