从gmail抓取html表格,并使用谷歌应用程序脚本放入谷歌表格
Grab html table from gmail and put in google sheets using google apps script
我是google apps脚本的新手。我正试图写一个谷歌应用程序脚本,将采取从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);
}
}
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:不能调用方法"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();
返回一个元素数组
您可以使用Anders建议的方法,但是由于电子邮件的内容没有根元素,这是XMLService要求作为解析的一部分。
您必须在电子邮件内容的两端附加根元素。
我建议在发送给解析方法
之前总是写第1行var xml = "<root>" + messageBody + "</root>"
var document = XmlService.parse(xml);
var content = document.getAllContent();
相关文章:
- 将谷歌自动完成地址信息放在页面上,而不是表格中
- 使用外部数据创建仪表板(谷歌电子表格)-JavaScript
- 谷歌电子表格的自定义xml解析功能
- SIMPLE Javascript代码,用于显示谷歌电子表格中单个字段的数据
- 在谷歌电子表格中循环单元格
- 使用谷歌地图api计算距离并将其设置在表格中<td>
- 有没有一种方法可以使用Javascript检索谷歌表单ITSELF(而不是电子表格)的数据
- 使用谷歌应用程序脚本制作基于谷歌电子表格的带有列表框的网络应用程序
- 应用程序脚本中导入HTML的数据擦除;谷歌表格
- 如何通过悬停或点击谷歌电子表格中的单元格来运行自定义功能
- 如何使用谷歌脚本将html表单数据保存到谷歌电子表格中
- 在最初的查询/表格绘制中只提取谷歌电子表格的一列
- 谷歌电子表格脚本:如何保存“;永远”;
- 谷歌电子表格,脚本,备份文件,子文件夹
- 如何在谷歌电子表格脚本中测试范围参数的类型
- 谷歌电子表格API
- 谷歌应用程序脚本-onFormSubmit-复制到电子表格中的单元格
- 谷歌表格注释时间线显示精确的值
- 使用公共谷歌电子表格(通过JavaScript)
- 为什么谷歌应用程序的电子表格setValue函数没有在单元格中设置值