Copy Email Messages in Gmail with Apps Script

This example shows how to create email copies in Gmail with Google Apps Script and the Gmail API. The requires requires authorization with the scope https://mail.google.com/ for reading Gmail drafts and composing new ones.

The uploadType is set to media and that will create the Gmail draft in a single HTTP request. However, if you are create a draft that includes big attachment, you may have to set the upload type as resumable to create the draft in at least two requests.

function duplicateGmailDrafts(count, draftId) {
  try {
    var draft = GmailApp.getMessageById(draftId);

    if (draft === null) {
      return 'Sorry, the draft message was not found. Please reload this page and try again.';
    }

    var gmailAPI = 'https://www.googleapis.com/upload/gmail/v1/users/me/drafts?uploadType=media';

    var params = {
      method: 'POST',
      contentType: 'message/rfc822',
      muteHttpExceptions: true,
      headers: {
        Authorization: 'Bearer ' + ScriptApp.getOAuthToken(),
      },
      payload: draft.getRawContent(),
    };

    for (var i = 0; i < count; i++) {
      UrlFetchApp.fetch(gmailAPI, params);
    }

    return 'Drafts Created';
  } catch (f) {
    return 'Error: ' + f.toString();
  }
}

Amit Agarwal is a web geek, solo entrepreneur and loves making things on the Internet. Google recently awarded him the Google Developer Expert and Google Cloud Champion title for his work on Google Workspace and Google Apps Script.

Awards & Recognition

Google Developer Expert

Google Developer Expert

Google awarded us the Developer Expert title recogizing our work in Workspace

ProductHunt Golden Kitty

ProductHunt Golden Kitty

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

Microsoft MVP Alumni

Microsoft MVP Alumni

Microsoft awarded us the Most Valuable Professional title for 5 years in a row

Google Cloud Champion

Google Cloud Champion

Google awarded us the Champion Innovator award for technical expertise

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

We will never send any spam emails. Promise 🫶🏻