• Notice regarding image hosts and attachments. See here.

Google App Script help

Soldato
Joined
18 Oct 2002
Posts
6,520
Location
N.Devon
Could anyone help me in changing the below script so that it purges emails after a set amount of hours instead of the days like it is now?

Code:
function purgeGmail() {

// The name of the Gmail Label that is to be autopurged?
var GMAIL_LABEL = "delete me";    
 
// Purge messages automatically after how many days?
var PURGE_AFTER = "1";
 

  
  var age = new Date();  
  age.setDate(age.getDate() - PURGE_AFTER);    
  
  var purge  = Utilities.formatDate(age, Session.getScriptTimeZone(), "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<threads.length; i++) {
      var messages = GmailApp.getMessagesForThread(threads[i]);
      for (var j=0; j<messages.length; j++) {
        var email = messages[j];       
        if (email.getDate() < age) {
          email.moveToTrash();
        }
      }
    }
    
  // If the script fails for some reason or catches an exception, 
  // it will simply defer auto-purge until the next day.
  } catch (e) {}
  
}
 
This line sets how often it purges:

.at(new Date((new Date()).getTime() + 1000*60*10))

So it gets the current date+time: new Date((new Date()).getTime()
then adds a certain number of seconds to that time: 1000*60*10

you can edit the number of seconds to change the frequency
 
Back
Top Bottom