Affichage des articles dont le libellé est google script. Afficher tous les articles
Affichage des articles dont le libellé est google script. Afficher tous les articles

vendredi 26 mai 2017

GMAIL - Google Script - auto delete old (junk) mail

Today I discovered the "google scripts" that allow you to run some sophisticated actions on the various "google apps"/"cloud apps". This includes Gmail, Google drive, etc.

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.
Version 2017 (old)

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
new version with same features plus :
  • 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.




Other solution (easier)

Use regular Gmail filters triggering deletions, but with search keys like :
older_than:6m

example :  find all promotions older than 1y that haven't been starred

category:promotions older_than:1y -label:starred