Gmail的应用脚本,为线程分配收件箱标签

时间:2017-03-07 21:39:19

标签: google-apps-script gmail

当我想给一个线程一个用户定义的标签时,没有问题。但是当我想给出系统标签" Inbox"。

时,问题就开始了
label = GmailApp.getUserLabelByName("Inbox")

thread.addLabel(label)

我收到此错误:

  

无效的参数:标签(第2行,文件'代码')

2 个答案:

答案 0 :(得分:2)

在Gmail中,“收件箱”是一个系统标签,与用户创建的标签不同,无法通过GmailThread类的getLabels()方法访问。

请注意,如果您登录Gmail帐户并在搜索栏中输入“label:inbox”,它将返回应用了可视标签“inbox”的主题列表。

出于安全原因,您只能使用Google围绕它们的方法与“收件箱”或“垃圾邮件”等系统标签进行互动。在以下示例中,结果与将“收件箱”标签应用于线程相同:

      var thread = GmailApp.getThreadById("yourId");

      if(!thread.isInInbox()) {

            thread.moveToInbox(); //apply the inbox label

                   }

您还可以使用GmailApp类的search()方法过滤收件箱邮件:

    var threads = GmailApp.search("label: inbox from: contact@example.com");

希望这有帮助!

答案 1 :(得分:0)

GmailLabel是“用户创建的标签”$compile service,因此我猜您无法添加类似“收件箱”的系统标签。即使在Gmail网页用户界面中,我们也无法应用收件箱标签。