微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Google Apps Script for循环无法处理getThreads中的所有项目

如何解决Google Apps Script for循环无法处理getThreads中的所有项目

我正在尝试创建一个功能,该功能可以读取电子邮件正文并提取要放置在工作表中的部分。

我目前正在使用以下代码提取电子邮件

 var label = GmailApp.getUserLabelByName("VOIDS");
 var threads = label.getThreads();

 for (var i = 0; i <= threads.length; i++)
  {
    var message = threads[i].getMessages();
    var body = message[0].getPlainBody();

    //email processing//

    threads[i].removeLable(label)
  }

就处理电子邮件并将其放置在我需要的地方而言,我已经完成了我需要做的循环,但是似乎跳过了电子邮件。我省略了该过程的代码,因为它只是body变量上的一堆split()函数,用于提取适当的信息并将其粘贴到工作表中。

跳过的电子邮件总数取决于要处理的电子邮件数量,但是重新运行脚本会导致每次跳过相同的电子邮件

所有电子邮件都已删除标签,并且所有电子邮件都是相同的,只是有一些值更改。

这是我第一次在发送电子邮件之外使用GmailApp。我敢肯定,这是我所缺少的超级简单的东西,但是尽管我进行了所有Google搜索,但似乎找不到解决方法

谢谢!

解决方法

请记住,getThreads可能不会返回邮箱中的所有线程。

摘自官方参考文档

getThreads()
获取带有该标签标记的线程。

当所有线程的大小对于系统无法处理时,此调用将失败。如果线程大小未知且可能很大,请使用getThreads(start,max)并指定在每次调用中要检索的线程范围。

资源

相关

,

一个线程可以包含多个电子邮件

  • var body = message[0].getPlainBody();行表示您仅在处理每个线程的第一条消息的正文。
  • 要在所有电子邮件中应用您的请求,您需要创建第二个循环,遍历每个线程的每个电子邮件。

示例:

var label = GmailApp.getUserLabelByName("VOIDS");
 var threads = label.getThreads();

 for (var i = 0; i <= threads.length; i++){
    var messages = threads[i].getMessages();
    for (var j = 0; j <= messages.length; j++){
      var message = messages[j];
      var body = message.getPlainBody();
      //email processing//
    }
    threads[i].removeLable(label);
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。