谷歌邮件应用程序脚本中的正则表达式困难 - 选择两个单词之间的单词

时间:2013-10-08 16:55:56

标签: javascript regex email google-apps-script google-sheets

该脚本从电子邮件中读取纯文本并将其发送到另一个函数,以在电子表格中写入确切的值。

我的问题是从电子邮件纯文本中获取一些数据(日期,名称等)。

这是功能:

   var threads = GmailApp.search('label:aoaoaoaoa');
   Logger.log(threads);
   Logger.log(threads[0].getMessages());
   Logger.log(threads[0].getMessages().length);
   var messages;// = threads[0].getMessages();
   var ContentEmail;// = messages[0].getBody();

   var bodyRe = new RegExp("(?=start date)(.*)(?=finish date)");

   for (var i = 0; i < threads.length; i++) {
    messages = threads[i].getMessages()
    ContentEmail = messages[0].getPlainBody();

   var myArray = bodyRe.exec(ContentEmail);
   Logger.log(myArray); 

myArray为null。 我尝试了许多正则表达式来获取两个单词之间的文本。其中一些返回null。其他人在脚本中引起了SyntaxError。

这是一个示例消息,我想获取日期,姓名,电话号码,电子邮件和地点。

Confirmation Code: CAXNA3JAA   Tue, October 01, 2013
start date     Tue, October 08, 2013
finish date 
Place: AOA Studio <http://www.**********************>
[image: Ali] <http://www.**********************>
Ali <http://www.***************************>
+49 000 000 00000
******@gmail.com

或者您是否建议使用google脚本html函数从电子邮件中读取数据? Here

1 个答案:

答案 0 :(得分:0)

如果您可以使用多行指定,则可以使用以下内容:

^start date\s*(.+)

但是,这不包括下次显示查找日期。

否则,这对我有用:(你可能要小心换行符)

start date\s*(.+)\nfinish date

要包含\r\n,您可以使用:

start date\s*(.+)(\r|\n)+finish date