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.
// 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) {}
}