【问题标题】:Removing label from Gmail email after X days using Google Apps ScriptX 天后使用 Google Apps 脚本从 Gmail 电子邮件中删除标签
【发布时间】:2016-06-16 19:54:29
【问题描述】:

我创建了一个 Google Apps 脚本 Code.gs,如下所示,以从早于 X 天并标记为 Y 的每个线程中删除 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 的来源。但是,在设置基于时间的触发器后,我得到两个函数都不存在的错误:

谁能帮我检测一下为什么这个功能不起作用?

【问题讨论】:

    标签: google-apps-script gmail


    【解决方案1】:

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

    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);
      }
    }
    

    【讨论】:

    • 在提供GmailLabel 对象作为参数时确实有效。感谢您的帮助!
    • @orchiro 或者,您可以在拥有线程数组后使用 GmailLabel.removeFromThreads(threads) 函数摆脱 for 循环。在上面的代码中,只需将 for 循环替换为 label.removeFromThreads(threads) 即可。如果您有大量线程,它将更快地工作并完全降低脚本超时的可能性
    • @Chikitulfo 感谢您的建议。也许 Amit Agarwal 可以更新他的解决方案?
    猜你喜欢
    • 2020-12-28
    • 2018-03-08
    • 1970-01-01
    • 2023-03-04
    • 1970-01-01
    • 2012-07-25
    • 2013-04-06
    • 2018-02-05
    • 2016-05-05
    相关资源
    最近更新 更多