撰写邮件草稿

您可以在 Google Workspace 插件中创建微件 关联了操作的广告系列。您可以使用 用于撰写新电子邮件草稿的操作,可选择使用 输入到插件界面中的信息或从已打开邮件中获取的信息。 例如,您可以在 插件的消息界面 创建对当前打开的邮件的回复,邮件中预填充了 信息。

当触发用于构建邮件的操作时,Gmail 会执行回调 函数来构建并返回草稿。然后,Gmail 会将该草稿 标准电子邮件撰写窗口中的界面,用户可以在该窗口中编辑和发送 。

配置用于构建消息草稿的操作

要将微件配置为在选中后启动草稿构建操作,您必须 执行以下操作:

  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. 构建 ComposeActionResponse 对象(使用 ComposeActionResponseBuilder) 类和 GmailDraft 对象。
    3. 返回构建的 ComposeActionResponse

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

您可以将草稿创建为一条新的独立邮件,也可以将其作为 现有消息。这是由 ComposeEmailType 提供给 setComposeAction()。 您可以创建单条回复或“全部回复”回复草稿消息。

独立草稿

独立的草稿会发起新会话,而不是对任何现有会话的回复 消息。您可以使用以下某种方式创建独立的草稿 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();
  }