ไฟล์แนบใน Google Apps Script
ฉันมีปัญหาเมื่อใส่ไฟล์แนบมากกว่าหนึ่งไฟล์ใน Google Apps Script เพื่อส่งในอีเมล
ส่วนของรหัสที่ทำคือ
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]
});
แต่เมื่อฉันเรียกใช้สิ่งนี้ฉันมีปัญหานี้:
ข้อยกเว้น: อาร์กิวเมนต์ไม่ถูกต้อง: ไฟล์แนบ (บรรทัด 151 ไฟล์ "อีเมล")
ฉันมีไฟล์. doc ที่กรอกข้อมูลแล้วแปลงเป็น PDF และอีกไฟล์ 2 ที่เป็น PDF อยู่แล้ว
เมื่อฉันรันด้วย file1 ฉันสามารถส่งอีเมลได้ แต่เมื่อฉันลองใช้ file1 และ file2 ฉันพบข้อผิดพลาดนี้ ใครจะรู้ว่าอาจเกิดอะไรขึ้น?
ฉันเรียกใช้คำแนะนำอื่น ๆ มากมายที่ฉันอ่านที่นี่ในกองซ้อน แต่ไม่มีใครได้ผล
คำตอบ
คำอธิบาย:
ปัญหาคือfile2
ไม่ใช่ประเภทFILEแต่เป็นวัตถุของคลาสFileIterator
ในทางกลับกัน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)
]
})};
}
อ้างอิง:
- getFilesByName (ชื่อ)
- createFile