1

我在谷歌应用程序脚本中创建了一个脚本,它将谷歌文档的内容读入 gmail 中的草稿消息。但是,它不会附加用户的签名。

所以我的计划是检索签名,然后附加到谷歌文档的内容,然后放入草稿消息中。

我看到这里有用于检索用户 gmail 签名的信息: https ://developers.google.com/admin-sdk/email-settings/#manage_signature_settings ,但我在尝试在现有脚本中实现它时遇到了麻烦。

我应该如何进行?(当前脚本如下)

function doGet() {
createDraft()
return HtmlService.createHtmlOutput('<b>Your catering email template can now be found in your <a href="https://mail.google.com/mail/#drafts">Drafts</a> folder!</b>');
}

function createDraft() {

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

var doc = DocumentApp.openById('1fsRMxtLx3IBEYvmVy9W8uHLw3Uf2OIh4L7ZSxpkixbY');

var body = doc.getBody();

var mbody = body.getText();



var raw = 
  'Subject: Catering Proposal\r\n' + 
  'Content-Type: multipart/alternative; boundary=1234567890123456789012345678\r\n' + '\r\n' +
  mbody + '\r\n' +
  '--1234567890123456789012345678--\n';

var draftBody = Utilities.base64Encode(raw);

Logger.log(draftBody);

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

我非常感谢可以提供的任何帮助!

4

2 回答 2

1

用户签名由单独的 API 处理,而不是 Gmail API。您需要先为此添加范围:

https://apps-apis.google.com/a/feeds/emailsettings/2.0/

然后使用 GET 检索签名

domain =gmail.com, for example
user = my.user, or whatever
https://apps-apis.google.com/a/feeds/emailsettings/2.0/domain/user/signature
于 2016-03-13T12:32:18.510 回答
1

这篇文章现在介绍了一种更简单的方法:

用于获取用户签名的 Apps 脚本

基本上:

var signature = Gmail.Users.Settings.SendAs.list("me").sendAs.filter(function(account){if(account.isDefault){return true}})[0].signature;
于 2017-01-18T21:50:53.617 回答