【发布时间】:2018-01-07 15:11:20
【问题描述】:
我正在使用谷歌应用脚本将电子邮件数据提取到谷歌电子表格中。我有以下我正在尝试修改的工作代码。我敢肯定有更聪明的方法......但现在这可行
function emf() {
var ss = SpreadsheetApp.getActiveSheet();
var label = GmailApp.getUserLabelByName("tkh_emf");
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 name = messages[j].getPlainBody().split("Name*:")[1].split("\n")[0];
var email = messages[j].getPlainBody().split("E-mail*:")[1].split("\n")[0];
var phone = messages[j].getPlainBody().split("Phone:")[1].split("\n")[0];
var addr = messages[j].getPlainBody().split("Street Address:")[1].split("\n")[0];
var city = messages[j].getPlainBody().split("City*:")[1].split("\n")[0];
var find = messages[j].getPlainBody().split("hear about us?*:")[1].split("\n")[0];
var sub = messages[j].getSubject().split("Feedback via the ")[1].split("[")[0];
var num = messages[j].getSubject().split("Feedback via the ")[1].split("[")[1].split("]")[0];
var dat = messages[j].getDate();
var referrer = messages[j].getPlainBody().split("Referer URL:")[1].split("\n")[0];
ss.appendRow([name, email, phone, addr, city, find, sub, num, dat, referrer])
}
threads[i].removeLabel(label);
}
}
我的电子邮件如下所示:
姓名*:姓名
电子邮件*:email@gmail.com
电话:
街道地址:3704 17th St.
城市*:城市
您是如何得知我们的?*:搜索引擎结果
请求工作的简要描述*:在这里工作
所以我的代码为每个字段提取了适当的字符串,除了不需要的“电话”和“地址”字段。如果未填写这些字段,则电子邮件中没有“电话”或“街道地址”字样,因此var phone 和var addr 的行将失败,因为您无法拆分空值。有没有办法插入一个如果字符串“电话”和“街道地址”存在然后执行上面的?谢谢。
【问题讨论】:
-
您是否有兴趣也能够验证电子邮件或地址的格式,还是只想将数据分离出来?
-
只需要将数据分离出来即可。
-
您是否考虑或尝试将 phone 和 address 每个放在其自己的 try {} 块中,其中 catch 忽略拆分错误?
-
但是你的问题是肯定的,见stackoverflow.com/questions/20527670/…
-
@JeremyKahan 做到了。谢谢!
标签: javascript google-sheets text-extraction