在 Google Apps 脚本中命名电子邮件附件
Name email attachment in Google Apps Script
我有以下 G.A.S 脚本可以将 google sheet 作为 pdf 附件通过电子邮件发送。
var spreadsheet = SpreadsheetApp.getActive();
var subject = spreadsheet.getRange("U1:U1").getValues();
var emailTo = spreadsheet.getRange("V1:V1").getValues();
var message = spreadsheet.getRange("W1:W1").getValues();
var pdf = DriveApp.getFileById(spreadsheet.getId()).getAs('application/pdf').getBytes();
var attach = {fileName:subject,content:pdf, mimeType:'application/pdf'};
MailApp.sendEmail(emailTo, subject, message, {attachments:[attach]});
上面的代码运行良好,只是附加到电子邮件的文件有一个奇怪的名称,如“[Ljava.lang.Object_@4e63998c”,没有“.pdf”扩展名!
我正在寻找一种在附加到电子邮件之前为 pdf 文件设置名称的方法。文件名应等于 "subject" 变量。
提前致谢。
奥米德
getValues()
检索到的值是二维数组。我认为文件名变成这样的字符串是因为数组被用作文件名。请从数组中检索元素并重试。那么能否请您修改如下?
发件人:
var attach = {fileName:subject,content:pdf, mimeType:'application/pdf'};
收件人:
var attach = {fileName:subject[0][0],content:pdf, mimeType:'application/pdf'};
您还可以使用以下修改。在这种情况下,getValue()
可以从单元格 "U1".
中检索字符串形式的值
发件人:
var subject = spreadsheet.getRange("U1:U1").getValues();
收件人:
var subject = spreadsheet.getRange("U1:U1").getValue();
参考:
如果这不是您想要的,请告诉我。我想考虑其他解决方案。
我有点晚了,但解决这个问题的另一种方法可能是:
var spreadsheet = SpreadsheetApp.getActive();
var subject = spreadsheet.getRange("U1:U1").getValues();
var emailTo = spreadsheet.getRange("V1:V1").getValues();
var message = spreadsheet.getRange("W1:W1").getValues();
var pdf = DriveApp.getFileById(spreadsheet.getId())
.getAs('application/pdf')
.getBlob()
.setName(subject);
MailApp.sendEmail(emailTo, subject, message, {attachments:[pdf]});
Blob class 有一个 setName
方法 https://developers.google.com/apps-script/reference/base/blob#setName(String),可以链接成一个 Blob 对象(这是 getBlob()
的结果)
之后你只需要在 attachments
函数数组 MailApp.sendEmail
中添加 Blob 对象
我有以下 G.A.S 脚本可以将 google sheet 作为 pdf 附件通过电子邮件发送。
var spreadsheet = SpreadsheetApp.getActive();
var subject = spreadsheet.getRange("U1:U1").getValues();
var emailTo = spreadsheet.getRange("V1:V1").getValues();
var message = spreadsheet.getRange("W1:W1").getValues();
var pdf = DriveApp.getFileById(spreadsheet.getId()).getAs('application/pdf').getBytes();
var attach = {fileName:subject,content:pdf, mimeType:'application/pdf'};
MailApp.sendEmail(emailTo, subject, message, {attachments:[attach]});
上面的代码运行良好,只是附加到电子邮件的文件有一个奇怪的名称,如“[Ljava.lang.Object_@4e63998c”,没有“.pdf”扩展名! 我正在寻找一种在附加到电子邮件之前为 pdf 文件设置名称的方法。文件名应等于 "subject" 变量。
提前致谢。 奥米德
getValues()
检索到的值是二维数组。我认为文件名变成这样的字符串是因为数组被用作文件名。请从数组中检索元素并重试。那么能否请您修改如下?
发件人:
var attach = {fileName:subject,content:pdf, mimeType:'application/pdf'};
收件人:
var attach = {fileName:subject[0][0],content:pdf, mimeType:'application/pdf'};
您还可以使用以下修改。在这种情况下,getValue()
可以从单元格 "U1".
发件人:
var subject = spreadsheet.getRange("U1:U1").getValues();
收件人:
var subject = spreadsheet.getRange("U1:U1").getValue();
参考:
如果这不是您想要的,请告诉我。我想考虑其他解决方案。
我有点晚了,但解决这个问题的另一种方法可能是:
var spreadsheet = SpreadsheetApp.getActive();
var subject = spreadsheet.getRange("U1:U1").getValues();
var emailTo = spreadsheet.getRange("V1:V1").getValues();
var message = spreadsheet.getRange("W1:W1").getValues();
var pdf = DriveApp.getFileById(spreadsheet.getId())
.getAs('application/pdf')
.getBlob()
.setName(subject);
MailApp.sendEmail(emailTo, subject, message, {attachments:[pdf]});
Blob class 有一个 setName
方法 https://developers.google.com/apps-script/reference/base/blob#setName(String),可以链接成一个 Blob 对象(这是 getBlob()
的结果)
之后你只需要在 attachments
函数数组 MailApp.sendEmail