【问题标题】:Why does GmailDraft.send() make the draft's gmail labels disappear?为什么 GmailDraft.send() 会使草稿的 gmail 标签消失?
【发布时间】:2019-05-01 00:11:03
【问题描述】:

在 google 脚本上,我执行以下操作:创建草稿,为其应用标签,发送草稿。然后,当我在我的 gmail 帐户中查看已发送的电子邮件时,标签不见了!

我的问题:为什么会这样?

这是代码(我在发送之前检查了标签是否正确应用):

var draft = GmailApp.createDraft("test@gmail.com", "Email Subject", "Email Body");
var label = GmailApp.getUserLabelByName("Label Name");
label.addToThread(draft.getMessage().getThread());
draft.send();

这很令人惊讶,尤其是因为在 gmail 中手动发送草稿不会以这种方式删除标签。

当然,解决这个问题的一种方法是在发送后添加标签(如下所示),但对我来说这并不方便,而且它仍然留下了一个问题,即为什么标签会消失没有答案......

var draft = GmailApp.createDraft("test@gmail.com", "Email Subject", "Email Body");
var label = GmailApp.getUserLabelByName("Label Name");
var message = draft.send();
label.addToThread(message.getThread());

【问题讨论】:

  • Apps 脚本不是 Gmail 用户界面。一般来说,您必须记住草稿和发送的草稿是两个完全不同的 MIME 消息。

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


【解决方案1】:

您可以查看documentation 上面的说明:

消息和线程可以有多个与之关联的标签; 但是,草稿邮件不能应用标签。修改 应用于线程的标签应用或删除指定的标签 来自线程中的所有消息。您可以修改哪些标签是 通过调用 messages.modify 或与消息或线程相关联 threads.modify,分别。

所以唯一的解决方法是使用

label.addToThread(message.getThread());

发送草稿后。

【讨论】:

  • 我有点困惑:问题中的第一个代码 sn-p 确实为草稿添加了一个标签——或者至少是与草稿相关的线程。标签也可以在 gmail 页面上手动添加:当我单击“发送”时,这些标签不会消失。为什么会出现差异?所有这些是否与您引用的文档 sn-p 一致?
  • 我的意思是任何草稿邮件都不能应用标签。在发送草稿之前添加标签不会生效。所以你只能在发送草稿消息后添加标签。
猜你喜欢
  • 2017-06-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-07
  • 2018-04-09
  • 1970-01-01
  • 2010-11-15
  • 2018-02-26
相关资源
最近更新 更多