Gmail 插件 createdraftreply() 回复你自己

Gmail addon createdraftreply() replying to yourself

我参考的是官方指南 here

创建回复草稿。

  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 data passed by the compose action.
   *  @return {ComposeActionResponse}
   */
  function createReplyDraft(e) {
    // Activate temporary Gmail add-on scopes, in this case to allow
    // a reply to be drafted.
    var accessToken = e.messageMetadata.accessToken;
    GmailApp.setCurrentMessageAccessToken(accessToken);

    // Creates a draft reply.
    var messageId = e.messageMetadata.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();
  }

当线程中的最后一条消息来自其他人时,它工作正常, 但当最后一条消息来自你自己时, 新草稿的收件人地址是你的地址,不是对方。

1.

(最后一条消息)其他人→我

createDraftReply()

(草稿)我→其他人

2.

(最后一条消息)我→其他人

createDraftReply()

(草稿)我→我

如何创建包含正确收件人的回复草稿?

在创建回复草稿之前,请检查收件人地址是否为自己。 如果 TO 是自己,则创建回复所有草稿而不是回复草稿 否则创建回复草稿。

if(message.getTo() === Session.getEffectiveUser().getEmail())

这是您可以检查的方式。

还有一种方法,你可以遍历所有的邮件,从外部挑选最新的邮件,并为其创建一个回复草稿。

var mssgs = message.getThread().getMessages();