Anhänge zu Google Apps Script
Ich habe ein Problem, wenn ich mehr als einen Anhang in Google Apps Script einfüge, um eine E-Mail zu senden.
Der Teil des Codes, der dies tut, ist
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]
});
Aber wenn ich das ausführe, habe ich folgendes Problem:
Ausnahme: Ungültiges Argument: Anhänge (Zeile 151, Datei "Email")
Ich habe eine DOC-Datei1, die ausgefüllt und dann in PDF konvertiert wird, und eine andere Datei2, die bereits eine PDF-Datei ist.
Wenn ich nur mit Datei1 laufe, kann ich die E-Mail senden, aber wenn ich es mit Datei1 und Datei2 versuche, habe ich diesen Fehler. Kann jemand wissen, was passieren könnte?
Ich mache viele andere Vorschläge, die ich hier im Stapel gelesen habe, aber keiner von ihnen hat damals funktioniert.
Antworten
Erläuterung:
Das Problem ist, dass file2
es sich nicht um einen Typ FILE handelt, sondern um ein Objekt der FileIterator- Klasse.
Auf der anderen Seite file1
ist vom Typ DATEI und deshalb funktioniert es richtig.
Es wird auch empfohlen, vor dem Senden der E-Mail zu überprüfen, ob der Dateiname vorhanden ist.
Lösung:
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)
]
})};
}
Verweise:
- getFilesByName (Name)
- erstelle Datei