// The name of the Gmail Label to expire var GMAIL_LABEL = 'expires'; // Archive messages automatically after N days var EXPIRE_AFTER = '10'; /* * STOP EDITING BELOW HERE UNLESS * YOU KNOW WHAT YOU'RE DOING * */ function Install() { ScriptApp.newTrigger('purge') .timeBased() .after(1000 * 60 * 5) .create() ; ScriptApp.newTrigger('purge') .timeBased() .everyDays(1) .create() ; } function Uninstall() { var triggers = ScriptApp.getProjectTriggers() ,i = 0 ,trigger ; while (trigger = triggers[i++]) { ScriptApp.deleteTrigger(trigger); } } function purge() { var expiry = new Date ,i = 0 ,threads ,thread ; expiry.setDate(expiry.getDate() - EXPIRE_AFTER); threads = GmailApp.search('in:inbox label:' + GMAIL_LABEL + ' before:' + Utilities.formatDate(expiry, Session.getScriptTimeZone(), 'yyyy-MM-dd'), 0, 100); if (threads.length == 100) { ScriptApp.newTrigger('purge') .timeBased() .after(1000 * 60 * 5) .create() ; } while (thread = threads[i++]) { if (thread.getLastMessageDate() < expiry) { thread.moveToArchive(); } } }