Archivos adjuntos en Google Apps Script
Tengo un problema cuando coloco más de un archivo adjunto en Google Apps Script para enviarlo por correo electrónico.
La parte del código que hace esto es
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]
});
Pero cuando ejecuto esto, tengo este problema:
Excepción: argumento no válido: archivos adjuntos (línea 151, archivo "Correo electrónico")
Tengo un archivo .doc1 que se completa y luego se convierte a PDF y otro archivo2 que ya es PDF.
Cuando ejecuto solo con el archivo1, puedo enviar el correo electrónico, pero cuando intento con el archivo1 y el archivo2, tengo este error. ¿Alguien puede saber lo que podría estar pasando?
Ejecuto muchas otras sugerencias que leí aquí en la pila, pero ninguna funcionó.
Respuestas
Explicación:
El problema es que file2
no es de un tipo FILE sino un objeto de la clase FileIterator .
Por otro lado, file1
es de tipo FILE y por eso está funcionando correctamente.
También es una buena práctica comprobar si el nombre del archivo existe antes de enviar el correo electrónico.
Solución:
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)
]
})};
}
Referencias:
- getFilesByName (nombre)
- crea un archivo