撰写邮件草稿

使用集合让一切井井有条 根据您的偏好保存内容并对其进行分类。
。如果您希望插件更改用户当前正在查看的草稿,请改为扩展 Compose 界面

在 插件中,您可以创建具有关联的操作widget。您可以使用操作来撰写新的电子邮件草稿,可以选择使用在插件界面中输入的信息或打开的消息中的信息来填充。例如,插件的消息界面中有一个按钮,用于创建对当前打开的消息的回复,该消息中预填充了插件中的信息。

当触发构建邮件的操作时,Gmail 会执行一个回调函数以构建并返回草稿。然后,Gmail 会在其界面的标准电子邮件撰写窗口中显示该草稿,用户随后可以根据需要对其进行修改和发送。

配置操作以构建消息草稿

如需配置某个 widget,使其在被选中后启动草稿构建操作,您必须执行以下操作:

  1. 确保您的清单包含 action.compose 范围

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

    您可以改用更宽松的作用域,但只有在绝对必要时才应这样做。

  2. 创建一个 Action 对象,并将其与您定义的回调函数相关联。

  3. 调用该 widget 的 setComposeAction() widget 处理程序函数,为其提供 Action 对象并指定 ComposeEmailType

  4. 实现执行草稿创建操作的回调函数。此函数有一个事件对象作为参数。回调函数必须执行以下操作:

    1. 创建一个 GmailDraft 对象。
    2. 使用 ComposeActionResponseBuilder 类和 GmailDraft 对象构建 ComposeActionResponse 对象。
    3. 返回构建的 ComposeActionResponse

您可以在回调函数中创建的 GmailDraft 预填充收件人、主题、邮件正文和附件。为填充草稿,数据可以来自任何来源,但通常来源于提供给插件本身的信息、打开的消息中的信息或从第三方服务收集的信息。传递给回调函数的事件对象包含可用于预填充草稿的打开消息 ID 和其他插件信息。

您可以将草稿创建为新的独立消息或对现有消息的回复。这由提供给 setComposeAction()ComposeEmailType 枚举控制。您可以创建单条回复或“全部回复”消息的回复草稿。

独立草稿

独立草稿会发起新会话,而不是回复任何现有消息。您可以使用以下 Gmail 服务函数来创建独立的草稿:

回复草稿

回复草稿是现有邮件会话的一部分。回复草稿要么是仅发送给发件人的单个回复,要么是“发送给所有收件人”的“回复”草稿。您可以使用以下 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();
  }