异常:无效参数:标签

Exception: Invalid argument: label

我是 google 脚本的新手。我的脚本通过所需的 gmail 标签解析所有线程中的所有电子邮件。这部分效果很好。现在我想为刚刚处理的线程添加新标签。它对我不起作用。我发现了这个 SO 问题 但它没有回答问题。

于是我又测试了一遍,发现连这段代码都没有

// Add label MyLabel to the first thread in the inbox
var label = GmailApp.getUserLabelByName("MyLabel");
var firstThread = GmailApp.getInboxThreads(0,1)[0];
firstThread.addLabel(label);

来自 https://developers.google.com/apps-script/reference/gmail/gmail-thread#addlabellabel

抛出同样的错误Exception: Invalid argument: label

知道如何给话题添加标签吗?

更新标签MyLabel不存在

在您的脚本中,使用了现有的标签名称。因此,当使用不存在的新标签名称时,会发生此类错误。为了使用新标签名称,需要创建新标签。所以当你的脚本修改后,就变成了下面这样

修改后的脚本:

var newLabelName = "sample1";  // Please set the new label name.
var newLabel = GmailApp.createLabel(newLabelName);
var firstThread = GmailApp.getInboxThreads(0,1)[0];
firstThread.addLabel(newLabel);

参考:

已添加:

关于how can I check if a label already exists?你的附加问题,我愿意回答。在这种情况下,您可以使用 getUserLabelByName 来检查它。当 GmailApp.getUserLabelByName(name)name 存在时,返回 GmailLabel 对象。当 GmailApp.getUserLabelByName(name)name 不存在时,返回 null。这个可以用。上面的脚本修改后如下。

修改后的脚本:

var newLabelName = "sample1";
var label = GmailApp.getUserLabelByName(newLabelName);
if (!label) {
  label = GmailApp.createLabel(newLabelName);
}
var firstThread = GmailApp.getInboxThreads(0,1)[0];
firstThread.addLabel(label);

或者,作为简单的脚本,您也可以使用下面的脚本。

var newLabelName = "sample";
var label = GmailApp.getUserLabelByName(newLabelName) || GmailApp.createLabel(newLabelName);
var firstThread = GmailApp.getInboxThreads(0,1)[0];
firstThread.addLabel(label);
  • 在此修改后的脚本中,当 newLabelName 不存在时,标签将创建为新标签。当 newLabelName 存在时,使用现有标签。