我是谷歌应用程序脚本的新手。我正在尝试编写一个 Google Apps 脚本,该脚本将从 Gmail 中获取表格并将数据放入 Google Sheets 中。
电子邮件正文有点像以下
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);
}
}
messages[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>
接下来我尝试使用以下内容来解析它
var msg = threads[0].getMessages();
var rows = Xml.parse(msg[0].getBody(),true).getElement()
.getElement("div")
.getElement("table")
.getElement("tbody")
.getElements("tr");
但这引发了错误“TypeError:无法调用 null 的方法“getElement”。”我对 XML 没有太多经验,所以请您告诉我我在这里做错了什么。 谢谢:)
最佳答案
看起来您正在调用 .getElement() ,但没有指定您希望它获取的元素。查看文档,XmlService 似乎是 api 的当前实现,因此您可能希望使用为其提供的函数,而不是 XML 对象中已弃用的版本。 https://developers.google.com/apps-script/reference/xml-service/
看起来你可以做一些类似的事情:
var document = XmlService.parse(xml);
var content = document.getAllContent();
它将返回一个元素数组。
关于javascript - 从 gmail 中获取 html 表并使用 google apps 脚本放入 google 表格中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38980196/