Gmail Auto Purge, written in Google Scripts, will automatically delete messages belonging to a particular label in Gmail after their retention periods expire. Some Gmail users receive log files and other non-essential email where only the recent messages are of importance. Auto-purge can help you get rid of these messages without you have to run the clean-up process manually.
|
2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
// The name of the Gmail Label that is to be autopurged? var GMAIL_LABEL = "Newsletters"; // Purge messages automatically after how many days? var PURGE_AFTER = "10"; function purgeGmail() { var age = new Date(); age.setDate(age.getDate() - PURGE_AFTER); var purge = Utilities.formatDate(age, Session.getTimeZone(), "yyyy-MM-dd"); var search = "label:" + GMAIL_LABEL + " before:" + purge; // This will create a simple Gmail search // query like label:Newsletters before:10/12/2012 try { // We are processing 100 messages in a batch to prevent script errors. // Else it may throw Exceed Maximum Execution Time exception in Apps Script var threads = GmailApp.search(search, 0, 100); // For large batches, create another time-based trigger that will // activate the auto-purge process after 'n' minutes. if (threads.length == 100) { ScriptApp.newTrigger("purgeGmail") .timeBased() .at(new Date((new Date()).getTime() + 1000*60*10)) .create(); } // An email thread may have multiple messages and the timestamp of // individual messages can be different. for (var i=0; i<threads.length; i++) { var messages = GmailApp.getMessagesForThread(threads[i]); for (var j=0; j<messages.length; j++) { var email = messages[j]; if (email.getDate() < age) { email.moveToTrash(); } } } // If the script fails for some reason or catches an exception, // it will simply defer auto-purge until the next day. } catch (e) {} } |
