Let's start with gmail since I have some needs I could not fit into the pretty basic filters that can be defined directly from the UI.
Context :
* I am able to identify labels are "search" (defined at the time the mail arrives) on my mailbox, that I want to delete after a certain period of time.
For instance, I might be interested in some promotions sent by some companies I have reductions cards with, but after X days, it's of no use and it's only taking precious space in my inbox.
* I do not wish to delete them directly, the "usual" trash with 30 days retention period is fine enought.
* I want to have this run every night.
1. Go to https://script.google.com
2. Enter this script :
- set the variable delayDays
- set the variable mySearch accordingly to your needs.
function cleanUp() {
/**
* @var delayDays int : Enter # of days before messages are moved to trash
* @var mySearch string : Enter the search as tested in Gmail search bar.
*/
var delayDays = 30 ;
var mySearch = 'label:online_store-totoStore OR from:bonsplans@newsletter.travel.com .com OR label:paris-freecycle';
//-- code
var maxDate = new Date();
maxDate.setDate(maxDate.getDate()-delayDays);
var tmp_threads = GmailApp.search(mySearch);
var threads = [];
var threads = threads.concat(tmp_threads);
for (var i = 0; i < threads.length; i++) {
if (threads[i].getLastMessageDate()
{
threads[i].moveToTrash();
}
}
}
EDIT 2020 : https://github.com/copolycube/GmailPurgeEmailsMatchingQuery
- array of simplier queries to find
- does multiple search instead of 1 massive one
- concatenates a "avoid deletion", for example to keep "starred" e-mail (by default)
3. Set it up to run every night :
3.1 : select the 'clock/trigger'.
3.2 : add the desired triggers on the popup window that will appear.