メッセージ UI の拡張

Gmail を拡張する Google Workspace アドオンは、 ユーザーがメッセージを読むときのユーザー インターフェースです。これにより、 Google Workspace のアドオンで、インシデント対応のタスクを自動化 メッセージの表示、取得、送信など、 メッセージに関連する追加情報。

アドオン メッセージ UI へのアクセス

アドオンのメッセージ UI を表示する方法は 2 つあります。1 つ目の方法は メッセージを表示したときに、アドオンがすでに開かれているときに Gmail の受信トレイ ウィンドウのアドオンのホームページ)に表示されます。2 つ目の方法は、 アドオンを起動することもできます。

いずれの場合も、アドオンは対応する コンテキスト トリガー関数( アドオンのマニフェストをご覧ください。 メッセージのやり取り中にユーザーが別のメッセージに切り替えた場合にも、 アドオンはまだ開いていません。コンテキスト トリガー関数は、メッセージ UI を そのメッセージと Gmail がユーザーに表示されます。

メッセージ アドオンの作成

アドオンにメッセージ機能を追加するための一般的な手順は次のとおりです。

  1. 適切なフィールドをアドオン スクリプト プロジェクトに追加する manifest 含まれる 必要なスコープ メッセージ機能も備えています。必ず 条件付きトリガー フィールド マニフェストに追加します。 unconditional{}
  2. メッセージ UI を構築するコンテキスト トリガー関数を実装する ユーザーがメッセージ内でアドオンを選択したとき。
  3. ユーザーの UI に応答するために必要な関連関数を実装する やり取りできます

コンテキスト トリガー

メッセージを読むときにユーザーをサポートするには Google Workspace アドオンは、 マニフェスト内のコンテキスト トリガー。ユーザーが トリガーを満たす Gmail のメール(アドオンを開いている状態)を開く 条件* です。トリガーが発動すると コンテキストに基づくトリガー関数です。これは、 戻されて Gmail に表示されます。その時点で ユーザーが操作を開始できます。

コンテキスト トリガーはアドオンのプロジェクトで定義される マニフェストをご覧ください。 トリガーの定義では、どのトリガー関数を実行するかを Gmail に指示します できます。たとえば、次のマニフェスト スニペットでは無条件のトリガーを設定しています。 次のサンプルでは、メッセージが開かれたときにトリガー関数 onGmailMessageOpen() を呼び出します。

{
  ...
  "addOns": {

    "common": {
      ...
    },
    "gmail": {
      "contextualTriggers": [
        {
          "unconditional": {},
          "onTriggerFunction": "onGmailMessageOpen"
        }
      ],
      ...
    },
    ...
  }
  ...
}

コンテキスト トリガー関数

すべてのコンテキスト トリガーには、対応するトリガー関数が必要 アドオンのユーザー インターフェースを構成します。この関数は、 マニフェストの onTriggerFunction 表示されます。この関数を実装して アクション イベント オブジェクト 単一の Pod または Card オブジェクトまたは Card オブジェクト。

特定の Gmail メールに対してコンテキスト トリガーが発動すると、 関数を呼び出して アクション イベント オブジェクト。 トリガー関数は、このイベント オブジェクトによって提供されるメッセージ ID を頻繁に使用する メッセージ テキストやその他の詳細情報を Apps Script の Gmail サービス。たとえば、トリガーが 関数では、次の関数を使用してメッセージの内容を抽出できます。

  // Activate temporary Gmail scopes, in this case to allow
  // the add-on to read message metadata and content.
  var accessToken = e.gmail.accessToken;
  GmailApp.setCurrentMessageAccessToken(accessToken);

  // Read message metadata and content. This requires the Gmail scope
  // https://www.googleapis.com/auth/gmail.addons.current.message.readonly.
  var messageId = e.gmail.messageId;
  var message = GmailApp.getMessageById(messageId);
  var subject = message.getSubject();
  var sender = message.getFrom();
  var body = message.getPlainBody();
  var messageDate = message.getDate();

  // Setting the access token with a gmail.addons.current.message.readonly
  // scope also allows read access to the other messages in the thread.
  var thread = message.getThread();
  var threadMessages = thread.getMessages();

  // Using this link can avoid the need to copy message or thread content
  var threadLink = thread.getPermalink();

トリガー関数はこのデータに対して動作し、 定義できます。たとえば、売上を要約するアドオンは 番号を使用すると、メッセージ本文から売上高を収集して、 カードとして表示する。

トリガー関数は、作成済みの Card 説明します。次の例では、1 つのカードでアドオンを作成します。 単にメールの件名と送信者を表示するだけです。

  function onGmailMessageOpen(e) {
    // Activate temporary Gmail scopes, in this case to allow
    // message metadata to be read.
    var accessToken = e.gmail.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    var messageId = e.gmail.messageId;
    var message = GmailApp.getMessageById(messageId);
    var subject = message.getSubject();
    var sender = message.getFrom();

    // Create a card with a single card section and two widgets.
    // Be sure to execute build() to finalize the card construction.
    var exampleCard = CardService.newCardBuilder()
        .setHeader(CardService.newCardHeader()
            .setTitle('Example card'))
        .addSection(CardService.newCardSection()
            .addWidget(CardService.newKeyValue()
                .setTopLabel('Subject')
                .setContent(subject))
            .addWidget(CardService.newKeyValue()
                .setTopLabel('From')
                .setContent(sender)))
        .build();   // Don't forget to build the Card!
    return [exampleCard];
  }