【发布时间】:2016-08-30 04:51:34
【问题描述】:
我正在尝试使用 Google Apps 脚本从我的 Gmail 邮件中提取如下所列的数字。
2,495.00
1,594
3,777.23
642.00
这是代码:
function myFunction() {
var sheet = SpreadsheetApp.getActiveSheet();
var threads = GmailApp.search('subject:(Transaction) after:2016/7/31 before:2016/8/10');
for (var i=0; i<threads.length; i++)
{
var messages = threads[i].getMessages();
var tmp;
for (var j=0; j<messages.length; j++)
{
var content = messages[j].getBody();
var subject = messages[j].getSubject();
var date = messages[j].getDate();
Logger.log(content);
if (content)
{
tmp = content.match(/\d+(,\d+)*(\.\d+(e\d+)?)?/);
var number = (tmp && tmp[j]) ? tmp[j] : 'No number';
sheet.appendRow([number, subject, date]);
}
else
{
sheet.appendRow([content, subject, date]);
}
}
}
}
我得到的结果好坏参半。对于某些消息,这按预期工作,但对于某些消息,它完全跳过消息中的数字。我是 JS/GAS 的新手,我认为问题出在正则表达式中,但我不确定。对此的任何帮助将不胜感激。
【问题讨论】:
-
你需要带逗号的数字吗?
-
如果是,请尝试:/(\d+,?\d+(?:\.\d+)?)/g
标签: javascript regex google-apps-script