下書きメッセージの作成

コレクションでコンテンツを整理 必要に応じて、コンテンツの保存と分類を行います。

Google Workspace アドオンでは、アクションをリンクするウィジェットを作成できます。アクションを使用すると、メールの下書きを作成できます。必要に応じて、アドオン UI に入力した情報または開いているメッセージの情報を使用して入力できます。たとえば、アドオンのメッセージ UI で、現在開いているメッセージに対して、アドオンの情報が事前入力されたメッセージに対する返信を作成するボタンを作成できます。

メッセージを作成するアクションがトリガーされると、Gmail はコールバック関数を実行して下書きを作成し、返します。Gmail の下書きが標準のメール作成ウィンドウに表示され、ユーザーは必要に応じて UI の編集や送信を行うことができます。

下書きメッセージを作成するためのアクションの構成

選択したときに下書き作成アクションを開始するようにウィジェットを構成するには、次の手順を行う必要があります。

  1. マニフェストaction.compose スコープが含まれていることを確認します。

    https://www.googleapis.com/auth/gmail.addons.current.action.compose

    代わりに制限の緩いスコープを使用することもできますが、そのスコープが絶対に必要な場合にのみ使用してください。

  2. Action オブジェクトを作成し、定義したコールバック関数に関連付けます。

  3. ウィジェットの setComposeAction() ウィジェット処理関数を呼び出し、Action オブジェクトを指定して ComposeEmailType を指定します。

  4. 下書き作成アクションを実行するコールバック関数を実装します。この関数には、イベント オブジェクトが引数として渡されます。コールバック関数は、次の処理を行う必要があります。

    1. GmailDraft オブジェクトを作成します。
    2. ComposeActionResponseBuilder クラスと GmailDraft オブジェクトを使用して、ComposeActionResponse オブジェクトを作成します。
    3. 作成された ComposeActionResponse を返します。

コールバック関数で作成した GmailDraft には、受信者、件名、メッセージ本文、添付ファイルをあらかじめ入力できます。下書きに記入するには、任意のソースからデータを取得しますが、通常は、アドオン自体に提供された情報、開いているメッセージの情報、またはサードパーティのサービスから収集された情報から取得されます。コールバック関数に渡されるイベント オブジェクトには、未処理のメッセージ ID と、下書きの事前入力に使用できるその他のアドオン情報が含まれます。

下書きは、新しいスタンドアロン メッセージとして作成するか、既存のメッセージへの返信として作成できます。これは、setComposeAction() に指定された ComposeEmailType 列挙型によって制御されます。返信の下書きは、1 つのメッセージまたは「全員に返信」のメッセージとして作成できます。

スタンドアロンの下書き

スタンドアロンの下書きは新しいスレッドを開始し、既存のメッセージに対する返信にはなりません。次のいずれかの Gmail サービス関数を使用して、スタンドアロンの下書きを作成できます。

返信の下書き

返信の下書きは既存のメッセージ スレッドの一部です。返信の下書きには、1 通の返信で、メッセージの送信者にのみ送信されるか、「全員に返信」の下書きがあります。下書きは、メッセージの送信者全員に送信されます。返信下書きを作成するには、次のいずれかの Gmail サービス機能を使用します。

次のコード スニペットは、返信の下書きを作成するアクションをボタンに割り当てる方法を示しています。

  var composeAction = CardService.newAction()
      .setFunctionName('createReplyDraft');
  var composeButton = CardService.newTextButton()
      .setText('Compose Reply')
      .setComposeAction(
          composeAction,
          CardService.ComposedEmailType.REPLY_AS_DRAFT);

  // ...

  /**
   *  Creates a draft email (with an attachment and inline image)
   *  as a reply to an existing message.
   *  @param {Object} e An event object passed by the action.
   *  @return {ComposeActionResponse}
   */
  function createReplyDraft(e) {
    // Activate temporary Gmail scopes, in this case to allow
    // a reply to be drafted.
    var accessToken = e.gmail.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    // Creates a draft reply.
    var messageId = e.gmail.messageId;
    var message = GmailApp.getMessageById(messageId);
    var draft = message.createDraftReply('',
        {
            htmlBody: "Kitten! <img src='cid:kitten'/>",
            attachments: [
              UrlFetchApp.fetch('https://example.com/images/myDog.jpg')
                  .getBlob()
            ],
            inlineImages: {
              "kitten": UrlFetchApp.fetch('https://example.com/images/myKitten.jpg')
                           .getBlob()
            }
        }
    );

    // Return a built draft response. This causes Gmail to present a
    // compose window to the user, pre-filled with the content specified
    // above.
    return CardService.newComposeActionResponseBuilder()
        .setGmailDraft(draft).build();
  }