2017-06-01 3 views
0

Ich habe ein Problem mit der Funktion XmlService.parse in Google App Script. Ich versuche ein Skript zu erstellen, und ich muss E-Mails parsen, die ich im Posteingang habe. Ich habe versucht, mehrere Tests E-Mail, die dieses FormatXML Parsing Google App-Skript

<div dir="ltr">test 1<div><br></div></div> 

haben zu senden, aber wenn ich diese Linie verwenden

var doc = XmlService.parse(messages[j].getBody());

Ich erhalte diese Fehler

Fehler in Zeile 1: Das Element Typ "br" muss mit dem passenden End-Tag "" beendet werden. (Zeile 18, Datei "Code")

Was ist erkennbar da es nur
in der Nachricht gibt. Gibt es eine Lösung, wie dieses Problem gelöst werden kann? Oder muss ich einen anderen Weg benutzen, um es zu parsen? Vielen Dank im Voraus.

edit: Ich habe das gleiche Problem mit img-Tag

Fehler aufgetreten: Fehler in Zeile 38: Der Elementtyp "img" muss durch den entsprechenden End-Tag beendet werden "".

Ich brauche den Text zu analysieren, die im roten Rahmen ist email to parse

In alter Skript gibt es eine Funktion

Xml.parse(messag.getBody(),true)

jedoch war diese Funktion ist veraltet. Ich habe versucht,

XmlService.parse(messages.getBody()); 

zu verwenden, die ich erwähnte, aber ich erhalte Fehler mit ungepaarte HTMLtags. Die Nachricht, die ich bekomme durch Funktion .getBody() ist hier getbody email

Könnte mir jemand helfen? Nochmals vielen Dank.

+0

Ich bin nicht sicher, dass der XML-Dienst das Werkzeug ist, das Sie verwenden möchten. Der Nachrichtentext wird HTML sein (und nicht immer wohlgeformt). –

+0

Versuchen Sie nur, den Nachrichtentext zu verstehen? Wenn dies der Fall ist, können Sie den einfachen Nachrichtentext anfordern. –

+0

XmlService kann HTML nicht analysieren. Es kann nur Canonical XML analysieren. –

Antwort

0

XmlService kann HTML nicht analysieren. Es kann nur Canonical XML analysieren. Aber es gibt HTML-Parsing-Bibliotheken für Knoten JS. Sie können also eines dieser Module verwenden, es durch browserify ausführen, eine kleine Änderung an der generierten Quelle vornehmen und eine Apps-Skriptbibliothek abrufen, die HTML analysiert.

https://github.com/fb55/htmlparser2

Meine erzeugte Bibliothek:

1TLbGgQBCztnB0lOhcTYKg2UpXtpdDwocvfcx44w1tqFnHDJC5ZXy_BDo
https://github.com/Spencer-Easton/Apps-Script-htmlparser2-library

Beispiel-Code von htmlparser2 readme geändert:

function myFunction() { 
    var htmlparser = htmlparser2.init(); 
    var parser = new htmlparser.Parser({ 
    onopentag: function(name, attribs){ 
     if(name === "div"){ 
     Logger.log("found div"); 
     } 
    }, 
    ontext: function(text){ 
     Logger.log("-->" + text); 
    }, 
    onclosetag: function(tagname){ 
     if(tagname === "div"){ 
     Logger.log("End Div"); 
     } 
    } 
    }, {decodeEntities: true}); 
    parser.write('<div dir="ltr">test 1<div><br></div></div>'); 
    parser.end(); 
}