Google Apps 脚本上的附件
Attachments on Google Apps Script
当我在 Google Apps 脚本中放入多个附件以发送电子邮件时,我遇到了一些问题。
执行此操作的代码部分是
reportPDF = doc.getAs('application/pdf')
reportPDF.setName('Attachment1 - '+ rows[0][0] + ".pdf");
var file1 = destinationFolder.createFile(reportPDF);
var file2 = DriveApp.getFilesByName("test.pdf");
DriveApp.getFileById(doc.getId()).setTrashed(true);
emails.forEach(function(email) {
MailApp.sendEmail(email, "Attachments - " + rows[0][0], "Hello!", {
name: 'Good Practices',
attachments: [file.getAs(MimeType.PDF), file2]
});
但是当我运行这个的时候,我遇到了这个问题:
Exception: Invalid argument: attachments (line 151, file
"Email")
我有一个已填写然后转换为 PDF 的 .doc 文件 1 和另一个已经是 PDF 的文件 2。
当我 运行 仅使用 file1 时,我可以发送电子邮件,但是当我尝试使用 file1 和 file2 时,出现此错误。谁能知道会发生什么?
我 运行 我在堆栈中阅读了很多其他建议,但没有一个起作用。
解释:
问题是 file2
不是 类型 FILE but an object of the FileIterator class。
另一方面,file1
是类型FILE,这就是它正常工作的原因。
在发送电子邮件之前检查文件名是否存在也是一个好习惯。
解决方案:
function myFunction() {
reportPDF = doc.getAs('application/pdf')
reportPDF.setName('Attachment1 - '+ rows[0][0] + ".pdf");
var file1 = destinationFolder.createFile(reportPDF); // this is a file
var folder = DriveApp.getFolderById(folderId); // put here the id of the folder
var file2 = folder.getFilesByName("test.pdf"); // this is a file iterator
DriveApp.getFileById(doc.getId()).setTrashed(true);
if (file2.hasNext() ) {
MailApp.sendEmail(emailAddress, "Attachments - " + rows[0][0], "Hello!",{
name: 'Good Practices',
attachments:
[
file1.getAs(MimeType.PDF),
file2.next().getAs(MimeType.PDF)
]
})};
}
参考文献:
当我在 Google Apps 脚本中放入多个附件以发送电子邮件时,我遇到了一些问题。
执行此操作的代码部分是
reportPDF = doc.getAs('application/pdf')
reportPDF.setName('Attachment1 - '+ rows[0][0] + ".pdf");
var file1 = destinationFolder.createFile(reportPDF);
var file2 = DriveApp.getFilesByName("test.pdf");
DriveApp.getFileById(doc.getId()).setTrashed(true);
emails.forEach(function(email) {
MailApp.sendEmail(email, "Attachments - " + rows[0][0], "Hello!", {
name: 'Good Practices',
attachments: [file.getAs(MimeType.PDF), file2]
});
但是当我运行这个的时候,我遇到了这个问题:
Exception: Invalid argument: attachments (line 151, file "Email")
我有一个已填写然后转换为 PDF 的 .doc 文件 1 和另一个已经是 PDF 的文件 2。
当我 运行 仅使用 file1 时,我可以发送电子邮件,但是当我尝试使用 file1 和 file2 时,出现此错误。谁能知道会发生什么?
我 运行 我在堆栈中阅读了很多其他建议,但没有一个起作用。
解释:
问题是 file2
不是 类型 FILE but an object of the FileIterator class。
另一方面,file1
是类型FILE,这就是它正常工作的原因。
在发送电子邮件之前检查文件名是否存在也是一个好习惯。
解决方案:
function myFunction() {
reportPDF = doc.getAs('application/pdf')
reportPDF.setName('Attachment1 - '+ rows[0][0] + ".pdf");
var file1 = destinationFolder.createFile(reportPDF); // this is a file
var folder = DriveApp.getFolderById(folderId); // put here the id of the folder
var file2 = folder.getFilesByName("test.pdf"); // this is a file iterator
DriveApp.getFileById(doc.getId()).setTrashed(true);
if (file2.hasNext() ) {
MailApp.sendEmail(emailAddress, "Attachments - " + rows[0][0], "Hello!",{
name: 'Good Practices',
attachments:
[
file1.getAs(MimeType.PDF),
file2.next().getAs(MimeType.PDF)
]
})};
}
参考文献: