E-Mail Google-Sheet-Palette (mit oder ohne Formatierung) als HTML-Tabelle in einem Google Mail-Nachricht
Also ich habe eine Google-Tabelle erstellen, automatisierte tägliche Berichte per E-Mail ein Teil der Reihe von meinen "Täglichen Bericht" Blatt als HTML-Tabelle über Google-Tabelle löst.
Habe ich einige bedingte Formatierung im Blatt, um es zu malen alle Zellen in der Spalte, MAX(Wert) in der besagten Spalte.
Habe ich es geschafft den code unten, welche E-Mails mir die Palette aber von Gmail nicht erkannt, es als eine HTML-Tabelle, sondern plain-text.
Habe ich versucht mit {htmlBody: htmltable} in der MailApp.sendEmail-Funktion, aber Google Mail nur Fehler aus ([Ljava.lang.Object;@SOME_HASH.
Frage 1: Wie kann ich E-Mail die Tabelle als HTML-und nicht plain-text mit allen HTML-tags sichtbar?
Frage 2: Wie könnte ich mich verbessern, meinen code zu bekommen, Google Sheets die Formatierung der Zelle und wenden Sie es auf die Zellen der Tabelle anstelle von ad-hoc-Formatierung nur, um die Tabelle zu schauen, OK?
function sendMail(){
var sh = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet()
var data = sh.getRange("A2:O38").getValues();
//var htmltable =[];
var TABLEFORMAT = 'cellspacing="2" cellpadding="2" dir="ltr" border="1" style="width:100%;table-layout:fixed;font-size:10pt;font-family:arial,sans,sans-serif;border-collapse:collapse;border:1px solid #ccc;font-weight:normal;color:black;background-color:white;text-align:center;text-decoration:none;font-style:normal;'
var htmltable = ['<table ' + TABLEFORMAT +' ">'];
for (row = 0; row<data.length; row++){
htmltable.push ('<tr>');
for (col = 0 ;col<data[row].length; col++){
if (data[row][col] === "" || 0) {htmltable.push('<td>' + 'None' + '</td>');}
else
if (row === 0) {
htmltable.push ('<th>' + data[row][col] + '</th>');
}
else {htmltable.push('<td>' + data[row][col] + '</td>');}
}
htmltable.push('</tr>');
}
htmltable.push ('</table>');
Logger.log(data);
MailApp.sendEmail(Session.getActiveUser().getEmail(), 'Daily report','' ,{htmlBody: htmltable})
}
InformationsquelleAutor Excel Cabbage | 2016-04-10
Du musst angemeldet sein, um einen Kommentar abzugeben.
Zur Frage 1, es sollte einfach sein, nicht mit einem array für jede Zeile der HTML-Tabelle. Nur verketten es in einen string und senden Sie es durch und sollte gut funktionieren.
Soweit die Frage 2, ich würde davon ausgehen, dass Sie müssten zu überprüfen, die bestimmten Bedingungen von den Zellen zu bestimmen, wie die Tabelle formatieren. Ich weiß nicht, ob es eine sicher einfache Möglichkeit, kopieren Sie alle Formatierungen.
Hier ist eine Idee, obwohl. Es ist möglich zu veröffentlichen ein Google-sheet als HTML (schauen Sie unter der Registerkarte "Datei"). Vielleicht gibt es einen Weg, um zu ziehen in die HTML-Datei über url, dann analysieren, was Sie brauchen. Ich habe nur keine Ahnung, ob es vielleicht über eine Zelle formatieren. Lohnt ein Blick in aber.
Bearbeiten (Verkettung):
Fügte auch einen Logger.anmelden, so dass Sie sehen können, wie die endgültige htmltable-Objekt "String" kommt. Vielleicht kopieren Sie diesen Wert in einen typischen index.html Seite und sehen, wie oder ob es richtig geladen wird.
Bearbeiten (getestet und funktioniert, siehe screenshots):
Update (Lösung für die Frage 2):
Nachdem Sie die Bibliothek SheetConverter von hier wies darauf hin, indem Sie Ihren Kommentar unten, ich war in der Lage, senden Sie eine perfekt formatierte E-Mail, der auf meinem Blatt genau! Siehe die screenshots unten.
Hier ist etwas code, der dies implementiert Lösung (stellen Sie sicher, dass Sie die Bibliothek zuerst von dem link oben):
Rufen Sie dann diese Funktion:
htmltable +=
aber es ist ein Fehler Missing ; before statement. (Zeile 7 der Datei "SendMail") . Ich bin Recht neu in JS bin ich also sicher bin ich etwas fehlt offensichtlich.Gerade getestet mit dem code, den ich oben gepostet und es funktioniert Prima.
Die änderung hat den trick! Danke! EDIT: ich wollte nicht sehen, Ihre Bearbeitung, bei der Entsendung mein Kommentar oben! Ich habe markiert Eure Antwort als akzeptiert.
?? Ihr willkommen! Habe ich auch getestet mit dem array.join () - Methode, aber Sie würde kommen mit nur einer ganzen Reihe von Kommas, aber der rest der Tabelle zeigte sich gut. So oder So, man sollte arbeiten. Wenn Sie jemals plan auf den Versuch, die Frage 2 Teil und eine gute Lösung zu finden, poste wieder hier und lassen Sie uns alle wissen! Ich würde sicher gerne wissen.
Ich habe schon hantieren mit Ihrer Frage 2 Teil und ich bin zu dem Punkt, wo ich das ziehen kann in die html, und navigieren Sie die Struktur, so dass ich nur die Daten der Tabelle. Aber ich bin mit Mühe die CSS zusammen mit ihm, denn es ist enthalten in den <head> - tag-Abschnitt. Wahrscheinlich werde ich versuchen, einige regex später, wenn ich mehr Zeit haben, um zu Graben, für die Lösung.
InformationsquelleAutor Gerneio