读取gmail线程中所有消息的正文,而不会超时

时间:2015-05-10 15:09:29

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

这是我的代码

var threads = GmailApp.search('label:X');
var messages = GmailApp.getMessagesForThreads(threads);
for (var i = 0; i < messages.length; i++) {
    var message = messages[i][0].getPlainBody();
    if (message == null) {
        message = messages[i][0].getBody();
    }
    //Utilities.sleep(1000);
}

如果没有Utilities.sleep方法,我会多次调用服务错误。

Service invoked too many times in a short time: gmail rateMax. Try Utilities.sleep(1000) between calls.

使用Utilities.sleep方法,我得到了超出最大时间错误。

Exceeded maximum execution time

标签有大约400个线程。在每个线程中读取第一条消息正文的优化方法是什么?

1 个答案:

答案 0 :(得分:1)

虽然您可以修改使用较小的睡眠值,但脚本没问题,只需要花费很多时间来处理这么多消息。相反,您需要在脚本属性中记住您正在处理的索引,并且每次只处理50个。然后一个时间触发器可以处理多次调用,直到完成。请参阅其他类似https://stackoverflow.com/a/30125776/2213940

的答案