Pièces jointes sur Google Apps Script
J'ai un problème lorsque je mets plusieurs pièces jointes dans Google Apps Script à envoyer dans un e-mail.
La partie du code qui fait cela est
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]
});
Mais quand je lance ceci, j'ai ce problème:
Exception: argument non valide: pièces jointes (ligne 151, fichier "Email")
J'ai un fichier .doc1 qui est rempli puis converti en PDF et un autre fichier2 qui est déjà un PDF.
Lorsque je lance uniquement avec le fichier1, je peux envoyer l'e-mail, mais lorsque j'essaye avec le fichier1 et le fichier2, j'ai cette erreur. Quelqu'un peut-il savoir ce qui pourrait se passer?
Je lance beaucoup d'autres suggestions que j'ai lues ici dans la pile, mais aucune d'entre elles n'a fonctionné.
Réponses
Explication:
Le problème est qu'il file2
ne s'agit pas d'un type FILE mais d'un objet de la classe FileIterator .
D'autre part, file1
est de type FILE et c'est pourquoi il fonctionne correctement.
Il est également recommandé de vérifier si le nom de fichier existe avant d'envoyer l'e-mail.
Solution:
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)
]
})};
}
Les références:
- getFilesByName (nom)
- createFile