从gmail抓取HTML表格,并使用谷歌应用程序脚本放在谷歌床单

我是新手到谷歌应用程序脚本。 我试图写一个谷歌应用程序脚本,将采取从gmail表,并把数据放入谷歌表。

电子邮件正文有点像以下内容

CONFIRMATION CODE GUEST'S NAME GUEST'S EMAIL GUEST'S PHONE A1 Name someone@gmail 012377777 

到目前为止,我已经尝试了下面的代码来获取电子邮件中的数据,并将其推送到电子表格。

 function myFunction() { var ss = SpreadsheetApp.getActiveSheet(); var label = GmailApp.getUserLabelByName("[Gmail]/test"); var threads = label.getThreads(); for (var i=0; i<threads.length; i++) { var messages = threads[i].getMessages(); for (var j=0; j<messages.length; j++) { var msg = messages[j].getBody(); var sub = messages[j].getSubject(); var dat = messages[j].getDate(); //ss.appendRow([msg, sub, dat]) } // threads[i].removeLabel(label); } } 

消息[j] .getBody()给我下面的html

 <u></u> <div> <table cellpadding="3" style="font-size:.9em"> <thead> <tr> <th>CONFIRMATION CODE</th> <th>GUEST'S NAME</th> <th>GUEST'S EMAIL</th> <th>GUEST'S PHONE</th> </tr> </thead> <tbody> <tr> <td> A1 </td> <td> Name </td> <td> someone@gmail </td> <td> 012377777 </td> </tr> </tbody> </table> </div> 

接下来我试图parsing这个使用以下

  var msg = threads[0].getMessages(); var rows = Xml.parse(msg[0].getBody(),true).getElement() .getElement("div") .getElement("table") .getElement("tbody") .getElements("tr"); 

但是,这引发了错误“TypeError:无法调用方法”getElement“null”。我没有太多的XML经验,所以请你能告诉我,我在这里做错了什么。 谢谢 :)

它看起来像你调用.getElement()没有指定你想要的元素。 看看这些文档,XmlService似乎是api的当前实现,因此您可能希望使用为其提供的函数,而不是XML对象中的弃用版本。 https://developers.google.com/apps-script/reference/xml-service/

看起来你可以按照以下方法做一些事情:

  var document = XmlService.parse(xml); var content = document.getAllContent(); 

这将返回一个元素的数组。