Schedule Gmail Emails with Google Script

You can compose an email message in Gmail now, let it stay there in the Drafts folder and have it sent automatically at a specified data and time with the help of Google Scripts.

The Schedule GMail script imports the draft message in a spreadsheet, you specify the send data and time and it creates corresponding time-driven triggers to automate delivery.

/* Written by Amit Agarwal of labnol.org */

function initialize() {
  /* Clear the current sheet */
  var sheet = SpreadsheetApp.getActiveSheet();
  sheet.getRange(2, 1, sheet.getLastRow() + 1, 5).clearContent();

  /* Delete all existing triggers */
  var triggers = ScriptApp.getProjectTriggers();
  for (var i = 0; i < triggers.length; i++) {
    if (triggers[i].getHandlerFunction() === 'sendMails') {
      ScriptApp.deleteTrigger(triggers[i]);
    }
  }

  /* Import Gmail Draft Messages into the Spreadsheet */
  var drafts = GmailApp.getDraftMessages();
  if (drafts.length > 0) {
    var rows = [];
    for (var i = 0; i < drafts.length; i++) {
      if (drafts[i].getTo() !== '') {
        rows.push([drafts[i].getId(), drafts[i].getTo(), drafts[i].getSubject(), '', '']);
      }
    }
    sheet.getRange(2, 1, rows.length, 5).setValues(rows);
  }
}

/* Create time-driven triggers based on Gmail send schedule */
function setSchedule() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var time = new Date().getTime();
  var code = [];
  for (var row in data) {
    if (row != 0) {
      var schedule = data[row][3];
      if (schedule !== '') {
        if (schedule.getTime() > time) {
          ScriptApp.newTrigger('sendMails')
            .timeBased()
            .at(schedule)
            .inTimezone(SpreadsheetApp.getActiveSpreadsheet().getSpreadsheetTimeZone())
            .create();
          code.push('Scheduled');
        } else {
          code.push('Date is in the past');
        }
      } else {
        code.push('Not Scheduled');
      }
    }
  }
  for (var i = 0; i < code.length; i++) {
    sheet.getRange('E' + (i + 2)).setValue(code[i]);
  }
}

function sendMails() {
  var sheet = SpreadsheetApp.getActiveSheet();
  var data = sheet.getDataRange().getValues();
  var time = new Date().getTime();
  for (var row = 1; row < data.length; row++) {
    if (data[row][4] == 'Scheduled') {
      var schedule = data[row][3];
      if (schedule != '' && schedule.getTime() <= time) {
        var message = GmailApp.getMessageById(data[row][0]);
        var body = message.getBody();
        var options = {
          cc: message.getCc(),
          bcc: message.getBcc(),
          htmlBody: body,
          replyTo: message.getReplyTo(),
          attachments: message.getAttachments(),
        };

        /* Send a copy of the draft message and move it to Gmail trash */
        GmailApp.sendEmail(message.getTo(), message.getSubject(), body, options);
        message.moveToTrash();
        sheet.getRange('E' + (row + 1)).setValue('Delivered');
      }
    }
  }
}
Amit Agarwal

Amit Agarwal

Google Developer Expert, Google Cloud Champion

Amit Agarwal is a Google Developer Expert in Google Workspace and Google Apps Script. He holds an engineering degree in Computer Science (I.I.T.) and is the first professional blogger in India.

Amit has developed several popular Google add-ons including Mail Merge for Gmail and Document Studio. Read more on Lifehacker and YourStory

0

Awards & Titles

Digital Inspiration has won several awards since it's launch in 2004.

Google Developer Expert

Google Developer Expert

Google awarded us the Google Developer Expert award recogizing our work in Google Workspace.

ProductHunt Golden Kitty

ProductHunt Golden Kitty

Our Gmail tool won the Lifehack of the Year award at ProductHunt Golden Kitty Awards in 2017.

Microsoft MVP Alumni

Microsoft MVP Alumni

Microsoft awarded us the Most Valuable Professional (MVP) title for 5 years in a row.

Google Cloud Champion

Google Cloud Champion

Google awarded us the Champion Innovator title recognizing our technical skill and expertise.

Email Newsletter

Sign up for our email newsletter to stay up to date.

We will never send any spam emails. Promise.