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

时间:2017-08-31 08:37:16

标签: google-apps-script gmail

我尝试在使用Google Apps脚本和GMail API创建的Gmail草稿中自动附加我的Google云端硬盘中的文件(理想情况下是文件ID)。我使用下面的语法。我能轻易做到吗?顺便说一下,创建草案非常有用。

谢谢!克里斯

  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);

}

1 个答案:

答案 0 :(得分:3)

以下示例脚本怎么样?这是一个非常简单的脚本,用于将文件附加到草稿。所以请将其修改为您的环境。

要使用此脚本,请在API console启用Gmail API。请将文件ID导入脚本中的fileId

示例脚本:

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"
    ]
  }
}

图片:

enter image description here