Avatar billede dogtown Seniormester
28. januar 2021 - 19:09 Der er 2 løsninger

Script i Google forms og Sheet, fejler i koden

Jeg har snuset mig frem til koden under. Den er skrevet i script på Google Sheets. Hvis jeg i editor kører send mail, så gør den det, når jeg vælger at køre send mail funktion. Hvis jeg derimod udfylder Forms og trykker send. Gemmer den PDF-fil med rigtigt navn og det hele. Men ingen mail.
Har prøvet flere forskellige løsninger jeg har fundet på nettet, men lykkes ikke. Min viden på området er ret så ringe.

function afterFormSubmit(e) {
  const info = e.namedValues;
  const pdfFile = createPDF(info);
  ///const modtager = "mail@gmail.com";
 
 
   
}

function sendEmail(pdfFile){
  var recipient = "mail@gmail.com,mail2@gmail.com";
    var sub = "Dette er en overskrift";
    var body = "Dette er inhold";
    MailApp.sendEmail(recipient, sub, body)
 
 
  ///MailApp.sendEmail('mail@gmail.com', "Overskrift", "Body TXT?");
}


function createPDF(info,){

  const pdfFolder = DriveApp.getFolderById("1DXMEyQjAbbaS_z0-U6XicpFHO85qAllI");
  const tempFolder = DriveApp.getFolderById("1DRsYZp-rT22NhEbcSpAQgWAk1S-4M0Lz");
  const  templateDoc = DriveApp.getFileById("1eQCOp6EGn42nwnKIGu5AigVeJuvxH5Ne4UAAL4cpwu0");
 
  const newTempFile = templateDoc.makeCopy(tempFolder);
 
  const openDoc = DocumentApp.openById(newTempFile.getId());
  const body = openDoc.getBody();
  body.replaceText("{fn}", info['Fornavn'][0]);
  body.replaceText("{ln}", info['Efternavn'][0]);
  body.replaceText("{addr}", info['Adresse'][0]);
  body.replaceText("{qty}", info['Antal'][0]);
  openDoc.saveAndClose();

  const blobPDF = newTempFile.getAs(MimeType.PDF);
  const pdfFile = pdfFolder.createFile(blobPDF).setName(info['Fornavn'][0] + " " + info['Efternavn'][0]);
  tempFolder.removeFile(newTempFile);
Avatar billede dogtown Seniormester
14. april 2021 - 17:23 #1
ingen respons
Avatar billede Keld Broe Seniormester
22. januar 2023 - 17:35 #2
Det ser ud til, at der er en fejl i din kode, da du ikke kalder sendEmail() funktionen inden i din afterFormSubmit() funktion.
Du skal tilføje et kald til sendEmail(pdfFile) inden i din afterFormSubmit() funktion, så den ser således ud:

function afterFormSubmit(e) {
  const info = e.namedValues;
  const pdfFile = createPDF(info);
  sendEmail(pdfFile);
}

Dette vil sikre, at sendEmail() funktionen køres, når formularen bliver indsendt, og PDF-filen vil blive sendt som vedhæftet fil i e-mailen.
Du kan også tilføje en fejlmeddelelse, hvis der sker en fejl i sendEmail() funktionen, så du kan debugge og løse problemet.

function sendEmail(pdfFile){
  var recipient = "mail@gmail.com,mail2@gmail.com";
    var sub = "Dette er en overskrift";
    var body = "Dette er inhold";
    try {
    MailApp.sendEmail(recipient, sub, body, {attachments: pdfFile});
    } catch (error) {
        Logger.log(error);
    }
}

Husk også at sørge for at have den korrekte ID for mappen og filen og at give scriptet de nødvendige tilladelser for at sende e-mails.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester