仅修改主题并发送草稿

Modify only the subject and send the draft

我知道如何 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")

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

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

如果我的理解是正确的,这个示例脚本怎么样?我认为有几个答案。所以请把这当作其中之一。

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

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

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

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

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

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

在 API 控制台启用 Gmail API

  • 在脚本编辑器上
    • 资源 -> 云平台项目
    • 查看API控制台
    • 在“开始”中,单击 "Explore and enable APIs"。
    • 在左侧,单击“库”。
    • 在搜索 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());
}

参考资料:

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