如何使用Google Apps脚本代码创建草稿电子邮件(从985开始)?

时间:2014-08-19 19:43:19

标签: email google-apps-script

Issue 985中,开发人员名为" yurec" (也许)在评论#29中提供了一些代码,用于在Google Apps脚本中创建草稿(文本)电子邮件。其他一些人感谢他的出色工作并说它已经过测试和工作。

我有点难过如何使用它以及代码的哪些部分需要更改(例如" id"和#34; threadId"?)。

无论如何,理想情况下我认为用法如下:

MailApp.createDraft(emailTo,subject,body,{' name':' Bob from Example Ltd'});

但无论如何,对我来说都是好事。感谢您的帮助。让它发挥作用将是幻想。

工作代码 - 您只需根据所选答案

设置Gmail API
function createDraft() {

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

  var raw = 
      'Subject: testing Draft\n' + 
      'To: my.test.account@gmail.com\n' +
      'Content-Type: multipart/alternative; boundary=1234567890123456789012345678\n' +
      'testing Draft msg\n' + 
      '--1234567890123456789012345678--\n';

  var draftBody = Utilities.base64Encode(raw);

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

2 个答案:

答案 0 :(得分:3)

您只需在控制台中设置Gmail API

在脚本编辑器中:

  • 资源> 高级脚本服务 (屏幕截图1)
  • 点击窗口底部的 Google Developers Console 链接 (截图2)

在开发者控制台中:

  • 向下滚动并找到 Gmail API 并将其启用。 (截图3)

关闭开发人员控制台标签

点击高级Google服务模式中的确定

授权该应用,您已完成所有设置。


这是我用

测试的代码
function createDraft() {
  try{
  var forScope = GmailApp.getInboxUnreadCount(); // needed for auth scope

  var raw = 
      'Subject: testing Draft from Apps Script\n' + 
      //'To: cyrus@mydomain.net\n' +
      'Content-Type: multipart/alternative; boundary=1234567890123456789012345678\n' +
      'testing Draft msg\n' + 
      '--1234567890123456789012345678--\n';

  var draftBody = Utilities.base64Encode(raw);

  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.getContentText());
  }catch(err){
    Logger.log(err.lineNumber + ' - ' + err);
  }
}

截屏1 Advanced Services Menu

截图2 Advanced Services Modal

截图3 Developers Console

答案 1 :(得分:0)

有任何解决方案可以粘贴到工作表的此电子邮件部分吗? f.e。:

spreadsheet.setActiveSheet(spreadsheet.getSheetByName('Podsumowanie-raport'),true);   var range = sheet.getRange('A1:N46');