如果包含某个字词,Google Script会检查列

时间:2014-02-12 08:38:37

标签: function gmail google-sheets

我是Google Scripting的新手。

我创建了一个Google电子表格应该连接到GMail的脚本。一切都运作良好。

我的问题是,我需要检查电子邮件内容是否包含“订购”字样。如果是,它应该得到“订单”一词和它后面的数字。

例如,电子邮件在邮件正文中包含“ORDER 90104”,然后Google脚本应将ORDER 90104插入表单中的列。电子邮件的示例可能是:

  

您好,客户要求 ORDER 90104 。感谢。

这甚至可能吗?截至目前,我使用getPlainBody(),我可以获取电子邮件的所有内容并将其放在一列中。我的计划是检查该列并查找单词ORDER。虽然我无法找到/结束解决方案。

这是我的工作代码,获取前三封电子邮件的电子邮件内容:

function getGMail() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getSheets()[0];
var threads = GmailApp.getInboxThreads(0,3);
cell = sheet.getRange("A1");

for (var i = 0; i < threads.length; i++) {
    threadMessage = threads[i].getMessages();
    var emailContent = threadMessage[0].getPlainBody();
    cell.offset(i,0).setValue(emailContent);    
} 

}

非常感谢任何建议或意见。

谢谢!

1 个答案:

答案 0 :(得分:1)

你好theladydevbugger,

由于你没有提供很多代码,我的答案很短:是的,你可以做到这一点! 方法:使用正则表达式:/ORDER [0-9]+/g.
如何使用正则表达式:下面是示例代码

var emailBody = yourMail.getPlainBody(); // supposing "yourMail" is the mail you retrieved
var isThereAnyOrder = false;
if(mailBody.search(/ORDER [0-9]+/g)>-1){
  isThereAnyOrder=true;
  var order=mailBody.match(/ORDER [0-9]+/g)>-1)[0];
  Logger.log(order);
  // do something with the order
  }
 else{
   // there is no order do nothing
 }