2014-11-05 64 views
0

我创建了Google Apps脚本Code.gs,如下所示从每个线程删除大于X天并标记为Y的Gmail标签。使用Google Apps脚本在X天后从Gmail电子邮件中删除标签

function archiveYThreads() { 
// Every thread, older than two days, and labeled "Unread Feeds". 
var threads = GmailApp.search('label:"Unread Feeds" older_than:2d'); 
    for (var i = 0; i < threads.length; i++) { 
    threads[i].removeLabel("Unread Feeds"); 
} 
} 

根据documentation,函数removeLabel存在。或者,我发现一些使用deleteLabel的来源。然而,这两个我得到这两个功能不存在错误,在已经设置了基于时间触发:

Screenshot Function not found

任何人可以帮我检测了为什么功能不工作?

回答

2

您必须提供一个类型为GmailLabel的对象作为removeLabel()方法的参数。试试这个片段。

function archiveYThreads() { 
var label = GmailApp.getUserLabelByName("Unread Feeds"); 
var threads = GmailApp.search('label:"Unread Feeds" older_than:2d'); 
    for (var i = 0; i < threads.length; i++) { 
    threads[i].removeLabel(label); 
    } 
} 
+0

将'GmailLabel'对象作为参数提供时,它可以工作。感谢您的帮助! – orschiro 2014-11-09 07:05:04

+1

@orschiro或者,一旦拥有线程数组,您可以通过使用'GmailLabel.removeFromThreads(threads)'函数来摆脱for循环。 在上面的代码中,简单地用'label.removeFromThreads(threads)'代替for循环就可以工作。 它会更快地工作,完全减少脚本超时的可能性,如果你有一个非常大的线程阵列 – Chikitulfo 2015-03-21 11:49:27

+0

@Chikitulfo感谢您的建议。也许阿米特阿加瓦尔可以更新他的解决方案? – orschiro 2015-03-21 13:57:04

相关问题