Google Script for Gmail可以删除*仅* *指定标签的电子邮件

时间:2016-11-03 15:06:40

标签: javascript email google-apps-script gmail

我正试图找到一种方法来定位只有一个标签的电子邮件。我想删除具有特定标签且超过2周的邮件。但是,我希望脚本忽略除指定标签之外还有其他标签的所有电子邮件。

例如,标有'订阅'的电子邮件会被删除,但标有'订阅'的电子邮件 AND '保留!'不会。

我目前的版本将删除任何带有指定标签的电子邮件,无论是否应用任何其他标签。

我使用公开Gmail Cleaning Robot script Fred Mouniguet作为我的基础。

这是我到目前为止所拥有的:

function gmailCleaningRobot() {

var delayDays = 14; // will only impact emails more than 2 weeks old
var maxDate = new Date();
maxDate.setDate(maxDate.getDate()-delayDays); // what was the date at that time?

// Get all the threads labeled 'Subscriptions'
var label = GmailApp.getUserLabelByName("Subscriptions");
var threads = label.getThreads(0, 100);

// we archive all the threads if they're unread AND older than the limit we set in delayDays
for (var i = 0; i < threads.length; i++) {
if (threads[i].getLastMessageDate()<maxDate && threads[i].isUnread())
{
threads[i].moveToTrash();
}
}
}

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

您可以在if语句中使用线程实例上的getLabels来解决此问题。

尝试以下方法。

if (threads[i].getLastMessageDate()<maxDate && threads[i].isUnread() 
    && threads.getLabels().length == 1)