1

Ich versuche, eine HTML-Vorlage verwenden, um benutzerdefinierte E-Mails mit Daten auf einem Google-Blatt gesammelt zu senden. Ich habe Code mit einer Schaltfläche verknüpft, so dass ich die Zeile/Zeilen, die ich per E-Mail versenden möchte, auswähle, auf die Schaltfläche klicke und sie an den Empfänger in dieser Zeile sende. Ich möchte auch die Körper der E-Mail Daten aus der Zeile enthalten. Ich verwende ein HTML-Body-Skript. Ich habe versucht, die gleichen email[column #] zu verwenden, um Daten aus dem Blatt im HTML-Skript aber vergeblich aufzurufen. Wie kann ich Felder von meinem Blatt erhalten, um das HTML-Skript zu füllen, um eine benutzerdefinierte E-Mail zu senden?Füllen Sie HTML Körper mit Google Blatt Felder mit MailApp.sendEmail Skript

Dies ist der Code, den ich zur Zeit bin mit:

function email() { 
    var htmlBody = HtmlService.createHtmlOutputFromFile('mail_template').getContent(); 
    var rng = SpreadsheetApp.getActiveSheet().getActiveRange() 
    var email = rng.getValues()[0]; 
    MailApp.sendEmail({ 
    to: email[23], 
    subject: 'Show Seats ' + email[1], 
    htmlBody: htmlBody, 
    replyTo:'[email protected]', 
    }); 
} 

und ich habe eine separate HTML-Datei auch im Skript gespeichert. Ich bevorzuge es, es in einer separaten Datei zu behalten, weil es für die Bearbeitung sauberer ist.

<html> 
    <head> 
    <script> 
    </script> 
    </head> 
    <body> 
     <p>Hello,</p> 
     <p>&nbsp;</p> 
     <p>You are CONFIRMED!</p> 
     <p>No. of Tickets: email[10]</p> 
     <p>Date/Time:email[2]</p> 
     <p>CC Charge: $email[14]</p> 
     <p>Held Under:email[1]</p> 
     <p>&nbsp;</p> 
     <p>Tickets will be held at the Box Office. If you are picking up your tickets in advance, they will be available 48 hours before your selected performance. Please note there is no late seating.</p> 
     <p>&nbsp;</p> 
     <p>Thanks!</p> 
<div><p><a href="http://www.gap.com/" style="font-family: Tahoma; font-size: 13px;"><img src="https://image.ibb.co/d0aDt6/DEH_Signature_Book.png" /></a></p></div> 

    </body> 
</html> 

Antwort

0

Schauen Sie sich mit Scriptlets mit evaluate()

function email() { 
    var htmlBody = HtmlService.createTemplateFromFile('mail_template'); 
    var rng = SpreadsheetApp.getActiveSheet().getActiveRange(); 
    var email = rng.getValues()[0]; 

    // set the values for the placeholders 
    htmlBody.tickets = email[10]; 
    htmlBody.datetime = email[2]; 
    htmlBody.cc = email[14]; 
    htmlBody.held_under = email[1]; 

    // evaluate and get the html 
    var email_html = htmlBody.evaluate().getContent(); 

    MailApp.sendEmail({ 
    to: email[23], 
    subject: 'Show Seats ' + email[1], 
    htmlBody: email_html, 
    replyTo:'[email protected]', 
    }); 
} 

In der HTML-Vorlage, fügen Sie die Platzhalter/printing scriptlets:

<html> 
    <body> 
    <p>Hello,</p> 
    <p>&nbsp;</p> 
    <p>You are CONFIRMED!</p> 
    <p>No. of Tickets: <?= tickets ?></p> 
    <p>Date/Time:<?= datetime ?></p> 
    <p>CC Charge: <?= cc ?></p> 
    <p>Held Under:<?= held_under ?></p> 
    <p>&nbsp;</p> 
    <p>Tickets will be held at the Box Office. If you are picking up your tickets in advance, they will be available 48 hours before your selected performance. Please note there is no late seating.</p> 
    <p>&nbsp;</p> 
    <p>Thanks!</p> 
    <div><p><a href="http://www.gap.com/" style="font-family: Tahoma; font-size: 13px;"><img src="https://image.ibb.co/d0aDt6/DEH_Signature_Book.png" /></a></p></div> 
    </body> 
</html> 
+0

zu reagieren Sie so viel Dank! Das sieht genau so aus, was ich anstrebe. Aber ich habe alle Ihre Änderungen integriert und jetzt bekomme ich diesen Fehler, wenn ich das Skript ausführe: "Objekt erlaubt keine Eigenschaften hinzuzufügen oder zu ändern." Irgendeine Idee, was ich falsch mache? – subtleb

+0

Es gab eine Tippfehler/falsche Methode in Beispiel: Verwenden Sie 'createTemplateFromFile' nicht' createHtmlOutputFromFile' - das Codebeispiel wurde aktualisiert –

+0

Das hat es behoben! Ich danke dir sehr!! – subtleb

Verwandte Themen