Allegati su Google Apps Script
Ho qualche problema quando inserisco più di un allegato in Google Apps Script da inviare in un'e-mail.
La parte del codice che lo fa è
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]
});
Ma quando lo eseguo, ho questo problema:
Eccezione: argomento non valido: allegati (riga 151, file "Email")
Ho un file .doc1 che viene compilato e poi convertito in PDF e un altro file2 che è già un PDF.
Quando eseguo solo con file1, posso inviare l'e-mail, ma quando provo con file1 e file2, ho questo errore. Qualcuno sa cosa potrebbe succedere?
Ho eseguito molti altri suggerimenti che ho letto qui in pila, ma nessuno di questi ha funzionato.
Risposte
Spiegazione:
Il problema è che file2
non è di un tipo FILE ma un oggetto della classe FileIterator .
D'altra parte, file1
è di un tipo FILE ed è per questo che funziona correttamente.
È anche una buona pratica controllare se il nome del file esiste prima di inviare l'email.
Soluzione:
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)
]
})};
}
Riferimenti:
- getFilesByName (nome)
- createFile