2017-06-01 81 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(); 
}