如何在使用Google Sheet上的GmailApp.sendmail时包含用户的Gmail签名

如何在使用Google Sheet上的GmailApp.sendmail时包含用户的Gmail签名,gmail,gmail-api,Gmail,Gmail Api,我创建了一个报告模板,该模板具有通过PDF导出谷歌工作表的功能,然后使用GmailApp.sendmail功能将创建的PDF发送电子邮件。我已经让它工作得很好了,只是我注意到发送的电子邮件中没有发件人的gmail签名 注:我声明了“发件人”电子邮件;) 我读了不少关于Gmail API上签名、默认签名、甚至使用草稿电子邮件的帖子,但就我所知,没有一篇对我有帮助。以下是我的问题: 1-由于这是一个模板表,任何人都可以使用它,因此发送的电子邮件需要使用特定用户的gmail签名。大多数帖子只提供手动在

我创建了一个报告模板,该模板具有通过PDF导出谷歌工作表的功能,然后使用GmailApp.sendmail功能将创建的PDF发送电子邮件。我已经让它工作得很好了,只是我注意到发送的电子邮件中没有发件人的gmail签名

注:我声明了“发件人”电子邮件;)

我读了不少关于Gmail API上签名、默认签名、甚至使用草稿电子邮件的帖子,但就我所知,没有一篇对我有帮助。以下是我的问题:

1-由于这是一个模板表,任何人都可以使用它,因此发送的电子邮件需要使用特定用户的gmail签名。大多数帖子只提供手动在脚本中输入的“默认”签名

2-我见过的其他解决方案使用“草稿”消息从我的电子邮件中提取此签名,只是在我的脚本中标记错误或根本不发送电子邮件

所以,为了让这个问题保持简单

在使用GmailApp.sendmail功能时,有没有办法包含“当前用户”的Gmail签名?如果可能的话,我如何将其添加到下面的脚本中

该脚本的最后一部分如下所示:

function sendSpreadsheetToPdf(sheetNumber, pdfName, email,subject, htmlbody) {
var spreadsheet = SpreadsheetApp.getActiveSpreadsheet();
var spreadsheetId = spreadsheet.getId()
var sheetId = sheetNumber ? spreadsheet.getSheets()[sheetNumber].getSheetId() : null;
var url_base = spreadsheet.getUrl().replace(/edit$/,'');

var url_ext = 'export?exportFormat=pdf&format=pdf'   //export as pdf
+ (sheetId ? ('&gid=' + sheetId) : ('&id=' + spreadsheetId))
// following parameters are optional...
+ '&size=A4'      // paper size
+ '&portrait=true'    // orientation, false for landscape
+ '&fitw=true'        // fit to width, false for actual size
+ '&sheetnames=true&printtitle=false&pagenumbers=true'  //hide optional headers and footers
+ '&gridlines=false'  // hide gridlines
+ '&fzr=false';       // do not repeat row headers (frozen rows) on each page

var options = {
headers: {
'Authorization': 'Bearer ' +  ScriptApp.getOAuthToken(),
}
}

var response = UrlFetchApp.fetch(url_base + url_ext, options);
var blob = response.getBlob().setName(pdfName + '.pdf');
if (email) {
var mailOptions = {
attachments:blob, htmlBody:htmlbody
}

GmailApp.sendEmail(
email,
subject+" " + pdfName +"",
"html content only",
mailOptions);
}
这是尝试和测试,并很高兴通过PDF发送我的活动表,但没有签名存在

有什么想法吗?

添加签名是Gmail Web UI客户端的一项设置,无法通过API访问
  • 您可以考虑在上提交功能请求
  • 同时:
您需要使用Gmail API的方法手动获取您的签名,并手动将其附加到电子邮件正文的末尾

  • 要在应用程序脚本中使用Gmail API方法,您可以执行URL获取请求,或者(更简单)执行
应用程序脚本中的示例代码段:

var-signature=Gmail.Users.Settings.SendAs.get(“我”、“你的电子邮件或别名”).signature;
htmlbody+=“
”+签名;
更新

完整代码:

函数sendSpreadsheetToPdf(图纸编号、pdfName、电子邮件、主题、htmlbody){
var signature=Gmail.Users.Settings.SendAs.get(“我”、“你的电子邮件或别名”).signature;
htmlbody+=“
”+签名; var电子表格=SpreadsheetApp.getActiveSpreadsheet(); var spreadsheetId=spreadsheet.getId() var sheetId=sheetNumber?电子表格.getSheets()[sheetNumber].getSheetId():null; var url_base=spreadsheet.getUrl().replace(/edit$/,“”); var url_ext='export?exportFormat=pdf&format=pdf'//导出为pdf +(sheetId?('&gid='+sheetId):('&id='+spreadsheetId)) //以下参数是可选的。。。 +'&size=A4'//纸张大小 +“&纵向=真”//方向,横向为假 +“&fitw=true”//适合宽度,实际尺寸为false +“&sheetnames=true&printtitle=false&PageNumber=true”//隐藏可选的页眉和页脚 +“&gridlines=false”//隐藏网格线 +“&fzr=false”;//不要在每页上重复行标题(冻结行) 变量选项={ 标题:{ “授权”:“承载者”+ScriptApp.getOAuthToken(), } } var response=UrlFetchApp.fetch(url\u base+url\u ext,选项); 如果(电子邮件){ var mailpoptions={ 附件:blob,htmlBody:htmlBody } GmailApp.sendmail( 电子邮件, 主题+“”+pdfName+“”, “仅限html内容”, 邮件选项); }
谢谢ziganotschka,如何在我的脚本中实现它?它标记了一个“Gmail未定义”错误。
Gmail未定义
通常意味着您未启用高级Gmail服务。如果您按照我回答中有关如何启用的链接进行操作,您将看到详细说明。基本上,您必须继续
Resources->Advanced Google Services
并将
Gmail API
的右侧按钮切换到
on
。I由于我的用户访问权限,我无法实现Gmail API,但我现在已经对其进行了排序。你能强调一下我如何将这个新脚本实现到我现有的脚本中吗?我对脚本编写非常陌生!当然-你可以简单地在函数开头插入这些行-前提是你的函数以前工作过,并且你传递了正确的参数从工作表中检索正确的数据(如果没有您的数据,我无法进行测试),它应该可以正常工作。但是,根据您的
htmlbody
现在的外观,您可能需要使hmtl标记有所不同。进行了一些修改,但成功了!超级材料ziganotschka。非常感谢您的帮助和耐心。