delete-all.js

var TRIGGER_NAME = "dailyDeleteGmail"; // Purge messages in the above label automatically after how many days? var DELETE_AFTER_DAYS = "4"; var TIMEZONE = "AEST"; // Maximum number of threads to process per run var PAGE_SIZE = 150; // If number of threads exceeds page size, resume job after X mins (max execution time is 6 mins) var RESUME_FREQUENCY = 10; function Intialize() { return;} function Install() { // First run 2 mins after install ScriptApp.newTrigger(TRIGGER_NAME) .timeBased() .at(new Date((new Date()).getTime() + 1000*60*2)) .create(); // Run daily there after ScriptApp.newTrigger(TRIGGER_NAME) .timeBased().everyDays(1).create(); } function Uninstall() { var triggers = ScriptApp.getProjectTriggers(); for (var i=0; i<triggers.length; i++) { ScriptApp.deleteTrigger(triggers[i]); } } function dailyDeleteGmail() { var age = new Date(); age.setDate(age.getDate() - DELETE_AFTER_DAYS); var purge = Utilities.formatDate(age, TIMEZONE, "yyyy-MM-dd"); var search = "before:" + purge; Logger.log("PURGE: " + purge); Logger.log("SEARCH: " + search); try { var threads = GmailApp.search(search, 0, PAGE_SIZE); // Resume again in 10 minutes if (threads.length == PAGE_SIZE) { Logger.log("Scheduling follow up job..."); ScriptApp.newTrigger(TRIGGER_NAME) .timeBased() .at(new Date((new Date()).getTime() + 1000*60*RESUME_FREQUENCY)) .create(); } // Move threads/messages which meet age criteria to trash Logger.log("Processing " + threads.length + " threads..."); for (var i=0; i<threads.length; i++) { var thread = threads[i]; if (thread.getLastMessageDate() < age) { thread.moveToTrash(); } else { var messages = GmailApp.getMessagesForThread(threads[i]); for (var j=0; j<messages.length; j++) { var email = messages[j]; if (email.getDate() < age) { email.moveToTrash(); } } } } } catch (e) {} }
Gmail: delete old emails

Be the first to comment

You can use [html][/html], [css][/css], [php][/php] and more to embed the code. Urls are automatically hyperlinked. Line breaks and paragraphs are automatically generated.