Categories
Code

Delete Unwanted Gmail Messages in Bulk with Google Scripts

Gmail Auto Purge, written in Google Scripts, will automatically delete messages belonging to a particular label in Gmail after their retention periods expire.

Some Gmail users receive log files and other non-essential email where only the recent messages are of importance. Auto-purge can help you get rid of these messages without you have to run the clean-up process manually.

 
// The name of the Gmail Label that is to be autopurged?
var GMAIL_LABEL = "Newsletters";    

// Purge messages automatically after how many days?
var PURGE_AFTER = "10";

function purgeGmail() {
  
  var age = new Date();  
  age.setDate(age.getDate() - PURGE_AFTER);    
  
  var purge  = Utilities.formatDate(age, Session.getTimeZone(), "yyyy-MM-dd");
  var search = "label:" + GMAIL_LABEL + " before:" + purge;

  // This will create a simple Gmail search 
  // query like label:Newsletters before:10/12/2012
  
  try {
    
    // We are processing 100 messages in a batch to prevent script errors.
    // Else it may throw Exceed Maximum Execution Time exception in Apps Script

    var threads = GmailApp.search(search, 0, 100);
    

    // For large batches, create another time-based trigger that will
    // activate the auto-purge process after 'n' minutes.

    if (threads.length == 100) {
      ScriptApp.newTrigger("purgeGmail")
               .timeBased()
               .at(new Date((new Date()).getTime() + 1000*60*10))
               .create();
    }

    // An email thread may have multiple messages and the timestamp of 
    // individual messages can be different.
    
    for (var i=0; i