ไฟล์แนบใน Google Apps Script

Jan 06 2021

ฉันมีปัญหาเมื่อใส่ไฟล์แนบมากกว่าหนึ่งไฟล์ใน 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 ฉันพบข้อผิดพลาดนี้ ใครจะรู้ว่าอาจเกิดอะไรขึ้น?

ฉันเรียกใช้คำแนะนำอื่น ๆ มากมายที่ฉันอ่านที่นี่ในกองซ้อน แต่ไม่มีใครได้ผล

คำตอบ

1 Marios Jan 06 2021 at 23:09

คำอธิบาย:

ปัญหาคือ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