2013-06-05 59 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);