Lampiran di Google Apps Script
Saya mengalami masalah saat saya memasukkan lebih dari satu lampiran di Skrip Google Apps untuk dikirim dalam email.
Bagian dari kode yang melakukan ini adalah
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]
});
Tetapi ketika saya menjalankan ini, saya Memiliki masalah ini:
Pengecualian: Argumen tidak valid: lampiran (baris 151, file "Email")
Saya memiliki file .doc1 yang diisi dan kemudian dikonversi ke PDF dan file2 lain yang sudah menjadi PDF.
Ketika saya menjalankan hanya dengan file1, saya dapat mengirim email, tetapi ketika saya mencoba dengan file1 dan file2, saya mengalami kesalahan ini. Adakah yang tahu apa yang mungkin terjadi?
Saya menjalankan banyak saran lain yang saya baca di sini dalam tumpukan, tetapi tidak ada yang berhasil.
Jawaban
Penjelasan:
Masalahnya adalah bahwa file2
bukan tipe FILE tetapi objek dari kelas FileIterator .
Di sisi lain, file1
adalah tipe FILE dan inilah mengapa ia bekerja dengan baik.
Ini juga merupakan praktik yang baik untuk memeriksa apakah nama file sudah ada sebelum Anda mengirim email.
Larutan:
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)
]
})};
}
Referensi:
- getFilesByName (nama)
- createFile