使用Google Apps脚本和Gmail API将附件添加到Gmail草稿中

问题描述:

我尝试在使用Google Apps脚本和GMail API创建的Gmail草案中自动将Google云端硬盘中的文件(最好使用文件ID)附加到文件中.我使用以下语法.我可以轻松做到这一点吗?顺便说一句,草稿的制作非常有用.

I try to automatically attach a file from my Google Drive (so ideally with the file id) in my Gmail draft created with Google Apps Script and GMail API. I use the syntax below. Can I do that easily? Creating the draft works great by the way.

谢谢!克里斯

  function createDraft() {

  var forScope = GmailApp.getInboxUnreadCount(); // needed for auth scope

  var htmlBody = 'Howzit';

  var raw = 
      'Subject: Howzit\n' + 
      'To: aa@bb.cc\n' +
      'Content-Type: text/html; charset=UTF-8\r\n' +
      '\r\n' + htmlBody;

  var draftBody = Utilities.base64Encode(raw, Utilities.Charset.UTF_8).replace(/\//g,'_').replace(/\+/g,'-');

  var params = {method:"post",
                contentType: "application/json",
                headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
                muteHttpExceptions:true,
                payload:JSON.stringify({
                  "message": {
                    "raw": draftBody
                  }
                })
               };

  var resp = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts", params);

}

如何跟踪示例脚本?这是用于将文件附加到草稿的非常简单的脚本.因此,请根据您的环境进行修改.

How about following sample script? This is a very simple script for attaching a file to a draft. So please modify this to your environment.

要使用此脚本,请在 API控制台中启用Gmail API.并将文件ID导入脚本中的fileId.

In order to use this script, please enable Gmail API at API console. And please import file ID to fileId in the script.

function createDraft() {
  var fileId = "### file id ###";
  var file = DriveApp.getFileById(fileId);
  var forScope = GmailApp.getInboxUnreadCount();
  var htmlBody = 'Howzit';
  var raw = 
      'Subject: Howzit\r\n' + 
      'To: aa@bb.cc\r\n' +
      'Content-Type: multipart/mixed; boundary=##########\r\n\r\n' +
      '--##########\r\n' +
      'Content-Type: text/html; charset=UTF-8\r\n\r\n' + htmlBody + '\r\n' +
      '--##########\r\n' +
      'Content-Type: ' + file.getMimeType() + '; charset=UTF-8; name="' + file.getName() + '"\r\n' +
      'Content-Disposition: attachment; filename="' + file.getName() + '"\r\n' +
      'Content-Transfer-Encoding: base64\r\n\r\n' + Utilities.base64Encode(file.getBlob().getBytes()) +
      '\r\n--##########\r\n';
  var draftBody = Utilities.base64EncodeWebSafe(raw, Utilities.Charset.UTF_8);
  var params = {
    method:"post",
    contentType: "application/json",
    headers: {"Authorization": "Bearer " + ScriptApp.getOAuthToken()},
    muteHttpExceptions: true,
    payload: JSON.stringify({"message": {"raw": draftBody}})
  };
  var resp = UrlFetchApp.fetch("https://www.googleapis.com/gmail/v1/users/me/drafts", params);
  Logger.log(resp)
}

结果:

{
  "id": "#####",
  "message": {
    "id": "#####",
    "threadId": "#####",
    "labelIds": [
      "DRAFT"
    ]
  }
}

图片: