【发布时间】:2014-01-17 05:47:03
【问题描述】:
更新:嗯,似乎发生了一些事情。现在,我的收件箱中的邮件已从 36,000 多条增加到 353,000 多条。嗯?这到底是怎么回事。
我从未归档过我的 Gmail 收件箱,因此其中有 36,000 多封邮件。我想存档超过 60 天的所有邮件,我无法手动进行。
所以经过一番谷歌搜索后,我在下面找到了一个可以做到这一点的谷歌脚本。但是,GmailApp.moveThreadsToArchive(threads); 显然一次最多只能在 100 个线程上调用,所以我尝试将其放入一个 while 循环中,一次在 100 个线程上多次调用它:
/**
* Archives Emails older than a given time interval
* src: http://www.quora.com/Gmail/Is-there-a-way-to-auto-archive-emails-after-a-certain-number-of-days
*
* example:
* RunAutoArchive('2w')
* RunAutoArchive('1m')
* RunAutoArchive('5y')
*/
function RunAutoArchive(){
// archive messages older than:
var interval='60d';
// number of threads
var threadCount = 0;
var start = 0;
var end = 100;
// find messages older than a certain time
if(interval != ""){
var searchQuery = 'in:Inbox older_than:'+interval;
var threads = GmailApp.search(searchQuery);
threadCount = threads.length;
// if there are any threads
if(threadCount > 0){
while(start <= threadCount){
// move threads to archive
GmailApp.moveThreadsToArchive(threads.slice(start,end));
// increment count
start += 100;
end += 100;
}
}
}
// refresh threads
GmailApp.refreshThreads(threads);
return threadCount;
}
但是,它既调试又成功运行(很长的执行记录以 [14-01-16 21:40:59:199 PST] Execution succeeded [284.472 seconds total runtime] 结尾),但我的收件箱保持不变 - 仍有 36,000 多条未归档的消息。
有什么建议可能是错的吗?
【问题讨论】:
-
一次可以处理多少封电子邮件实际上是有限制的。这个问题可能对您有所帮助(即使它试图解决一个完全不同的问题,即以前的错误):stackoverflow.com/questions/15234882/…
-
不过,您必须根据自己的需要对其进行一些调整。
-
我还想指出,您的脚本没有考虑到最后一个批次(可能)不完整的可能性。此外,您的脚本中有一些无用的混乱:您的间隔变量永远不会是空字符串,因为您将其设置为空字符串,并且您不需要最初将线程数声明为 0,因为如果您的搜索没有带来任何结果,您'将得到一个长度为零的数组。当您删除不必要的 if 语句时,不需要后者。
标签: javascript google-apps-script gmail