仅修改主题并发送草稿

时间:2019-02-18 11:13:30

标签: google-apps-script gmail gmail-api

我知道如何send a Gmail draft with

var draft = GmailApp.getDrafts()[0]; 
var msg = draft.send();

以及如何使用update修改草稿:

draft.update("mike@example.com", "current time", "The time hello")

但是如何仅修改主题而不是内容,不是附件(如果有),而不是收件人?

1 个答案:

答案 0 :(得分:3)

  • 您只想更新草稿的主题。
  • 您不想修改文本正文,HTML正文和附件文件。
  • 您想使用Google Apps脚本实现这一目标。

如果我的理解是正确的,那么该示例脚本如何?我认为有几个答案。因此,请仅考虑其中之一。

在此示例脚本中,我使用了GmailApp类和Gmail API。脚本的流程如下。

  1. 使用Class GmailApp以文本形式检索草稿的原始数据。
  2. 替换原始数据的主题。
  3. 使用Utilities.base64EncodeWebSafe()将文本转换为base64。
  4. 通过Gmail API使用新的原始数据更新草稿。

通过此流程,只能更新主题。

在运行此脚本之前,请在高级Google服务和API控制台中启用Gmail API。

在高级Google服务中启用Gmail API v1

  • 在脚本编辑器上
    • 资源->高级Google服务
    • 打开Gmail API v1

在API控制台上启用Gmail API

  • 在脚本编辑器上
    • 资源-> Cloud Platform项目
    • View API控制台
    • 在“入门”中,单击“探索并启用API”。
    • 在左侧,单击库。
    • 在“搜索API和服务”中,输入“ Gmail”。然后点击Gmail API。
    • 单击“启用”按钮。
    • 如果已启用API,请不要关闭。

示例脚本:

function updateDraftmail() {
  var newSubject = "new subject"; // Please set new subject.
  var userId = "me"; // Please set userId.
  var draft = GmailApp.getDrafts()[0]; // Retrieve a draft.

  var raw = draft.getMessage().getRawContent();
  var newRaw = raw.replace(/Subject: \w.+/, "Subject: " + newSubject);
  var newRawB64 = Utilities.base64EncodeWebSafe(newRaw, Utilities.Charset.UTF_8);
  Gmail.Users.Drafts.update({message: {raw: newRawB64}}, userId, draft.getId());
}

参考文献:

如果我误解了您的问题,而这不是您想要的,我表示歉意。