Anhänge zu Google Apps Script

Jan 06 2021

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

1 Marios Jan 06 2021 at 23:09

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