Automatically deletes old emails that match the specified label.
- Create a new Google Apps Script at https://script.google.com
- Overwrite the placeholder with the javascript below
- Update the following constants:
LABEL_TO_DELETE
: the label that should be have old messages deletedDELETE_AFTER_DAYS
: the age of messsages after which they will be moved to trash
- Save the script, then run:
Initialize
Install
If you ever want to remove the script, run Uninstall
to remove any left over triggers.
- Added support for multiple labels
- Added configurable
TRIGGER_NAME
- Increased default page size
- Decreased default delay between receipt and delete
- Removed use of deprecated
Session.getTimeZone()
- Improved efficiency for long threads by checking
thread.getLastMessageDate()
H/T: Arun's post How to Auto Delete Old Emails In Any Gmail Label
Hello!
First of all, thanks for sharing this content.
I'm trying to apply this script to my Gmail, but for some reason it does no seem to be working as expected. I have made some changes on it to adjust the number of days to keep the emails, on the time zone and on the format date. It looks like this:
// The name of the Gmail Label that is to be checked for purging?
var LABELS_TO_DELETE = [
"geekbuying",
"notino",
"auchan"
];
var TRIGGER_NAME = "dailyDeleteGmail";
// Purge messages in the above label automatically after how many days?
var DELETE_AFTER_DAYS = "1";
var TIMEZONE = "GMT+01:00";
// 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;
/*
IMPLEMENTATION
*/
function Intialize() {
return;
}
function Install() {
// First run 2 mins after install
ScriptApp.newTrigger(TRIGGER_NAME)
.timeBased()
.at(new Date((new Date()).getTime() + 1000602))
.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, "dd-MM-yyyy");
var search = "(label:" + LABELS_TO_DELETE.join(" OR label:") + ") before:" + purge;
Logger.log("PURGE: " + purge);
Logger.log("SEARCH: " + search);
try {
} catch (e) {}
}
What am i doing wrong?