|
/* |
|
|-------------------------------------------------------------------------- |
|
| PurgeOldEmails |
|
|-------------------------------------------------------------------------- |
|
| https://gist.github.com/benbjurstrom/00cdfdb24e39c59c124e812d5effa39a |
|
| |
|
*/ |
|
|
|
// Purge messages automatically after how many days? |
|
var DELETE_AFTER_DAYS = 7 |
|
|
|
// Maximum number of message threads to process per run. |
|
var PAGE_SIZE = 150 |
|
|
|
/** |
|
* Create a trigger that executes the purge function every day. |
|
* Execute this function to install the script. |
|
*/ |
|
function setPurgeTrigger() { |
|
ScriptApp |
|
.newTrigger('purge') |
|
.timeBased() |
|
.everyDays(1) |
|
.create() |
|
} |
|
|
|
/** |
|
* Create a trigger that executes the purgeMore function two minutes from now |
|
*/ |
|
function setPurgeMoreTrigger(){ |
|
ScriptApp.newTrigger('purgeMore') |
|
.timeBased() |
|
.at(new Date((new Date()).getTime() + 1000 * 60 * 2)) |
|
.create() |
|
} |
|
|
|
/** |
|
* Deletes all triggers that call the purgeMore function. |
|
*/ |
|
function removePurgeMoreTriggers(){ |
|
var triggers = ScriptApp.getProjectTriggers() |
|
for (var i = 0; i < triggers.length; i++) { |
|
var trigger = triggers[i] |
|
if(trigger.getHandlerFunction() === 'purgeMore'){ |
|
ScriptApp.deleteTrigger(trigger) |
|
} |
|
} |
|
} |
|
|
|
/** |
|
* Deletes all of the project's triggers |
|
* Execute this function to unintstall the script. |
|
*/ |
|
function removeAllTriggers() { |
|
var triggers = ScriptApp.getProjectTriggers() |
|
for (var i = 0; i < triggers.length; i++) { |
|
ScriptApp.deleteTrigger(triggers[i]) |
|
} |
|
} |
|
|
|
/** |
|
* Wrapper for the purge function |
|
*/ |
|
function purgeMore() { |
|
purge() |
|
} |
|
|
|
|
|
/** |
|
* Deletes any emails from the inbox that are more then 7 days old |
|
* and not starred or marked as important. |
|
*/ |
|
function purge() { |
|
removePurgeMoreTriggers() |
|
|
|
var search = 'in:inbox -in:starred -in:important older_than:' + DELETE_AFTER_DAYS + 'd' |
|
var threads = GmailApp.search(search, 0, PAGE_SIZE) |
|
|
|
if (threads.length === PAGE_SIZE) { |
|
console.log('PAGE_SIZE exceeded. Setting a trigger to call the purgeMore function in 2 minutes.') |
|
setPurgeMoreTrigger() |
|
} |
|
|
|
console.log('Processing ' + threads.length + ' threads...') |
|
|
|
var cutoff = new Date() |
|
cutoff.setDate(cutoff.getDate() - DELETE_AFTER_DAYS) |
|
|
|
// For each thread matching our search |
|
for (var i = 0; i < threads.length; i++) { |
|
var thread = threads[i] |
|
|
|
// Only delete if the newest message in the thread is older then DELETE_AFTER_DAYS |
|
if (thread.getLastMessageDate() < cutoff) { |
|
thread.moveToTrash(); |
|
} |
|
} |
|
} |
Thanks for sharing this code and really like your video on Youtube.
Kindly share some tips and video for learning Automation testing.