2017-06-01 110 views
0

我在Google App腳本中的函數XmlService.parse有問題。我正在嘗試創建腳本,並且需要解析收件箱中的電子郵件。我試圖發送一些測試電子郵件,其中有這樣的格式XML解析谷歌應用腳​​本

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

,但如果我用這條線

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

我得到這個錯誤在第1行

錯誤:元素類型「br」必須由匹配的結束標記「」終止。 (第18行,文件「代碼」)

什麼是可以認識的是在消息中只有
。有沒有解決方案如何解決這個問題?或者我必須用另一種方式解析它?先謝謝你。

編輯:我與img標籤

出錯同樣的問題:在第38行錯誤:元素類型「IMG」必須由匹配的結束標籤「」來終止。

我需要解析這是在紅色框email to parse

在舊腳本有但是該功能已過時的功能

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

文本。我試圖使用

XmlService.parse(messages.getBody()); 

我提到,但我得到不成對的html標記的錯誤。我通過函數.getBody()得到的消息是getbody email

有人可以幫我嗎?再次感謝。

+0

我不確定XML服務是您想要使用的工具。消息正文將成爲HTML(並不總是格式良好)。 –

+0

你只是試圖獲得消息文本?如果是這樣,您可以請求純文本消息。 –

+0

XmlService無法解析HTML。它只能解析Canonical XML。 –

回答

0

XmlService無法解析HTML。它只能解析Canonical XML。但是有一些節點JS的html解析庫。因此,您可以通過browserify運行這些模塊中的一個,對生成的源進行較小的修改,並獲取解析html的Apps腳本庫。

https://github.com/fb55/htmlparser2

我生成的庫:

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

實施例從htmlparser2自述修改後的代碼:

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(); 
}