2013-06-05 57 views
-1

有人可以帮我整理一下吗?我怕我不太技术和削减ñ粘贴各种脚本和建议,但仍然超时....超过最大执行时间的脚本

function cleanUp() { 
var batchSize = 100 // Process up to 100 threads at once 
var delayDays = 10 // Enter # of days before messages are moved to trash 
var maxDate = new Date(); 
maxDate.setDate(maxDate.getDate()-delayDays); 
var label = GmailApp.getUserLabelByName("delete me"); 
var threads = label.getThreads(); 
for (var i = 0; i < threads.length; i++) { 
if (threads[i].getLastMessageDate()<maxDate) 
    { 
     threads[i].moveToTrash(); 
     } 
    } 
} 

回答

0

第一个问题的答案是“有多少线程你们有与标签删除我” ? 看起来,您试图通过使用batchSize变量来限制一次处理的线程数量,但您尚未使用它。要同时对100个标签的工作,你可以修改你的循环略有

/* This will work on 100 threads at a time */ 
for (var i = 0; (i < threads.length) && (i < batchSize) ; i++) { 
if (threads[i].getLastMessageDate()<maxDate) 
    { 
     threads[i].moveToTrash(); 
     } 
    } 
} 

在另一方面,我不认为你可以直接从Date对象扣除天数。你可能不得不这样做

var ONE_DAY = 24 * 60 * 60 * 1000; //in ms 
var delayDays = 10 // Enter # of days before messages are moved to trash 
var maxDate = new Date(); 
var numDays = delayDays * ONE_DAY ; 
maxDate.setTime(maxDate.getTime() - numDays);