我在Google App Script中遇到了函数XmlService.parse的问题。我正在尝试创建脚本,我需要解析收件箱中的电子邮件。我试图发送几个具有此格式的测试电子邮件
<div dir="ltr">test 1<div><br></div></div>
但如果我使用这一行
var doc = XmlService.parse(messages[j].getBody());
我收到此错误
第1行出错:元素类型&#34; br&#34;必须由匹配的结束标记终止&#34;&#34;。 (第18行,文件&#34;代码&#34;)
什么是可识别的,因为只有信息。有没有解决方案如何解决这个问题?或者我必须用另一种方式解析它?提前谢谢。
编辑:我对img标签有同样的问题
错误发生:第38行出错:元素类型&#34; img&#34;必须由匹配的结束标记终止&#34;&#34;。
我需要解析红框email to parse
中的文字在旧脚本中有一个函数
Xml.parse(messag.getBody(),true)
但是不推荐使用此功能。我试着用
XmlService.parse(messages.getBody());
我提到的但是我得到了未配对的html标签的错误。我通过函数.getBody()得到的消息在这里getbody email
有人可以帮助我吗?再次感谢。
答案 0 :(得分:3)
XmlService无法解析HTML。它只能解析Canonical XML。但是有节点JS的html解析库。因此,您可以使用其中一个模块通过browserify运行它,对生成的源进行一些小修改,并获得一个解析html的Apps脚本库。
我生成的库:
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();
}