gpt4 book ai didi

google-apps-script - 如何在谷歌脚本中阅读收件箱中的所有邮件?

转载 作者:行者123 更新时间:2023-12-04 01:44:58 27 4
gpt4 key购买 nike

下面的脚本只返回 500 封邮件的记录。谷歌开发人员帮助明确指出“如果线程大小未知,并且可能非常大,请使用‘分页’调用,并指定在每次调用中检索的线程范围。”
什么是分页调用?怎么做 ?
我什至尝试过 GmailApp.getInboxThreads(start,end)如果参数>500,则显示错误。
如何阅读收件箱中的所有 22000 封邮件?

//google script
function spreadsheetSaver()
{
var emailSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
emailSheet.clear();
var thread = GmailApp.getInboxThreads();
var row = 1;
for(var i=0;i<thread.length;i++)
{
var mail = thread[i].getMessages();
for(var msg in mail)
{
var message = mail[msg];
if (message && message.isInInbox())
{
var txt = message.getPlainBody();
emailSheet.getRange(row++,1).setValue(txt);
}
}
}
};

预期的输出必须将所有 22000 封邮件保存在电子表格中

最佳答案

您必须分批检索 500 个线程并在每次循环迭代后更新线程索引。当检索到的线程数组的长度不再等于最大线程数时,您停止循环 - 换句话说,要处理的线程少于 500 个。
这是简单的代码

 var startIndex = 0;
var maxThreads = 500;

do {

threads = GmailApp.getInboxThreads(startIndex, maxThreads);

for(var i=0; i < threads.length; i++) {

//Do something

}

//Increment startIndex by 500 after having processed 500 threads

startIndex += maxThreads;

} while (threads.length == maxThreads);

不幸的是,您会遇到其他问题,例如执行时间配额。没有办法在不超过配额的情况下在一次调用中处理所有 22000 条消息。您必须监视执行时间并在脚本运行时间接近配额设置的时间(个人帐户为 6 分钟运行时间)时停止脚本,并使用 ScriptApp.newTrigger(functionName) 重新安排脚本再次运行。您还必须在调用之间存储“startIndex”的值 - 考虑使用 PropertiesService。

关于google-apps-script - 如何在谷歌脚本中阅读收件箱中的所有邮件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55722600/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com