为什么GmailDraft.send()会使草稿的gmail标签消失?

时间:2018-11-29 01:07:32

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

在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中手动发送草稿并不会以这种方式删除标签。

当然,解决此问题的一种方法是在发送后添加标签(如下所示),但是出于我的目的,这并不方便,并且仍然留下了一个问题,即为什么标签消失得无影无踪... < / p>

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());

1 个答案:

答案 0 :(得分:1)

您可以在documentation上显示以下内容:

  

消息和线程可以具有与其关联的多个标签;   但是,草稿邮件不能应用标签。修改中   应用于线程的标签将应用或删除指定的标签   来自线程中的所有消息。您可以修改哪些标签是   通过调用import chain from lodash/chain与消息或线程关联,或者   分别为import {chain} from lodash/chain

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

messages.modify

发送草稿后。