如何在使用Google Sheet上的GmailApp.sendmail时包含用户的Gmail签名
我创建了一个报告模板,该模板具有通过PDF导出谷歌工作表的功能,然后使用GmailApp.sendmail功能将创建的PDF发送电子邮件。我已经让它工作得很好了,只是我注意到发送的电子邮件中没有发件人的gmail签名 注:我声明了“发件人”电子邮件;) 我读了不少关于Gmail API上签名、默认签名、甚至使用草稿电子邮件的帖子,但就我所知,没有一篇对我有帮助。以下是我的问题: 1-由于这是一个模板表,任何人都可以使用它,因此发送的电子邮件需要使用特定用户的gmail签名。大多数帖子只提供手动在脚本中输入的“默认”签名 2-我见过的其他解决方案使用“草稿”消息从我的电子邮件中提取此签名,只是在我的脚本中标记错误或根本不发送电子邮件 所以,为了让这个问题保持简单 在使用GmailApp.sendmail功能时,有没有办法包含“当前用户”的Gmail签名?如果可能的话,我如何将其添加到下面的脚本中 该脚本的最后一部分如下所示:如何在使用Google Sheet上的GmailApp.sendmail时包含用户的Gmail签名,gmail,gmail-api,Gmail,Gmail Api,我创建了一个报告模板,该模板具有通过PDF导出谷歌工作表的功能,然后使用GmailApp.sendmail功能将创建的PDF发送电子邮件。我已经让它工作得很好了,只是我注意到发送的电子邮件中没有发件人的gmail签名 注:我声明了“发件人”电子邮件;) 我读了不少关于Gmail API上签名、默认签名、甚至使用草稿电子邮件的帖子,但就我所知,没有一篇对我有帮助。以下是我的问题: 1-由于这是一个模板表,任何人都可以使用它,因此发送的电子邮件需要使用特定用户的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方法,您可以执行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。非常感谢您的帮助和耐心。