Gmail API:使用Google Apps脚本从标签中删除所有电子邮件相当缓慢

时间:2020-09-10 09:33:47

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

我用它删除标签中的所有电子邮件:

WKNavigationDelegate

但是它很慢(对于包含几百条消息的标签,速度要超过1分钟30分),因为它会在所有消息上进行迭代。

另一种选择是完全删除标签,然后重新创建它,但这将更改该标签的Gmail GUI设置(颜色等),因此实际上不是一个选择。

问题:如何使用Google Apps脚本在Gmail中有效地从标签中删除所有电子邮件?

1 个答案:

答案 0 :(得分:2)

比常规的for循环更快-请参见here

您可以通过将代码修改为

来提高速度
function emptyLabel() {
  var label = GmailApp.getUserLabelByName("label_name");
  var threads = label.getThreads();
  threads.forEach(function(thread){
    thread.removeLabel(label);
  })
} 

此外,Gmail API通常比GmailApp快

enabling中通过Apps脚本编辑器完成后,通常可以结合使用users.messages.listusers.messages.batchModify来加快请求的速度:

function myFunction() {
  var messages = Gmail.Users.Messages.list("me", {"labelIds":"label_name"}).messages;
  var ids = [];
  messages.forEach(function(message){ids.push(message.id)});
  Gmail.Users.Messages.batchModify({"ids":ids, "removeLabelIds":["label_name"]}, "me");

}
相关问题