如何在收到电子邮件时自动调用脚本?

时间:2016-05-17 09:20:55

标签: javascript google-apps-script gmail

我正在编写一个脚本,当您收到电子邮件时会自动调用该脚本。它在我执行它时第一次运行。下次触发器应该运行它。但它给了我错误。

ScriptApp.newTrigger("parseEmailMessages(1)")
.timeBased()
.after(1 * 60 * 1000).create();

function parseEmailMessages(start) {

  start = start || 0;
  var threads = GmailApp.getInboxThreads(start, 100);
   var sheet = SpreadsheetApp.openByUrl(
     'https://docs.google.com/spreadsheets/d/1y-DfkatwBrLHBpCMvd_Tc2Smhb87z6xrYVC78ulnMIo/edit#gid=231924366');

  for (var i = 0; i < threads.length; i++) {
      var tmp=null;
      message = threads[i].getMessages()[0];
      subject = message.getSubject();
      content = message.getPlainBody();

    if(subject=="Fwd: CREDIT APPLICATION"){

    if (content) {

      tmp = content.match(/First Name:\s*([A-Za-z0-9\s]*)(\r?\n)/);
      var fname = (tmp && tmp[1]) ? tmp[1].trim() : 'No fname';

      tmp = content.match(/Last Name:\s*([A-Za-z0-9\s]+)(\r?\n)/);
      var lname = (tmp && tmp[1]) ? tmp[1].trim() : 'No lname';

      tmp = content.match(/Address:\s*([A-Za-z0-9\s]+)(\r?\n)/);
      var address = (tmp && tmp[1]) ? tmp[1].trim() : 'No address';

      tmp = content.match(/City:\s*([A-Za-z0-9\s]*)(\r?\n)/);
      var city = (tmp && tmp[1]) ? tmp[1].trim() : 'No city';

      tmp = content.match(/State:\s*([a-zA-Z]+)*(\r?\n)/);
      var state = (tmp && tmp[1]) ? tmp[1].trim() : 'No state';

       tmp = content.match(/Zip:\s*([0-9]*)(\r?\n)/);
      var zip = (tmp && tmp[1]) ? tmp[1].trim() : 'No zip';

      tmp = content.match(/Cell Phone Number:\s*([0-9]*[-]*[0-9]*[-]*[0-9]*)(\r?\n)/);
      var cphone = (tmp && tmp[1]) ? tmp[1].trim() : 'No cphone';

      tmp = content.match(/Email:\s*([A-Za-z0-9@.]+)(\r?\n)/);
      var email = (tmp && tmp[1]) ? tmp[1].trim() : 'No email';

      tmp = content.match(/Own:\s*([A-Za-z]*)(\r?\n)/);
      var proptype = (tmp && tmp[1]) ? tmp[1] : 'No proptype';

      tmp = content.match(/Mortgage:\s*([$][0-9]*[,]*[0-9]*[,][0-9]*[.][0-9]*)*(\r?\n)/);
      var rent = (tmp && tmp[1]) ? tmp[1].trim() : 'No rent';

      tmp = content.match(/Years at Address:\s*([0-9]+\s[year(s)]+\s*[0-9]+\s*[month(s)]+)(\r?\n)/);
      var yearatadd  = (tmp && tmp[1]) ? tmp[1].trim() : 'No yearatadd';  
    //Employee info
      tmp = content.match(/Employer Name:\s*([A-Za-z0-9\s]+)(\r?\n)/);
      var empname = (tmp && tmp[1]) ? tmp[1].trim() : 'No empname';

      tmp = content.match(/Position:\s*([A-Za-z0-9\s]+)(\r?\n)/)
      var emptitle = (tmp && tmp[1]) ? tmp[1].trim() : 'No emptitle';

      tmp = content.match(/Phone:\s*([0-9]*[-]*[0-9]*[-]*[0-9]*)(\r?\n)/);
      var bphone = (tmp && tmp[1]) ? tmp[1].trim() : 'No bphone';

      tmp = content.match(/Gross Monthly Salary:\s* ([$][0-9]*[,]*[0-9]*[,][0-9]*[.][0-9]*)*(\r?\n)/);
      var salary = (tmp && tmp[1]) ? tmp[1].trim() : 'No salary';

      tmp = content.match(/Years at Employment:\s*([0-9]+\s[year(s)]+\s*[0-9]+\s*[month(s)]+)(\r?\n)/);
      var empyear  = (tmp && tmp[1]) ? tmp[1].trim() : 'No empyear';
      //Vehicl info
      tmp = content.match(/Make:\s*([A-Za-z]+\s*[-]*\s*[A-Za-z]*)*(\r?\n)/);
      var make = (tmp && tmp[1]) ? tmp[1].trim() : 'No make';

      tmp = content.match(/Model:\s*([A-Za-z0-9\s]*)*(\r?\n)/);
      var model = (tmp && tmp[1]) ? tmp[1].trim() : 'No model';

      tmp = content.match(/Exterior Color:\s*([A-Za-z0-9\s]*)*(\r?\n)/);
      var extcolor = (tmp && tmp[1]) ? tmp[1].trim() : 'No extcolor';

      tmp = content.match(/Interior Color:\s*([A-Za-z0-9\s]*)*(\r?\n)/);
      var intcolor = (tmp && tmp[1]) ? tmp[1].trim() : 'No intcolor';     

      tmp = content.match(/Vehicle Year:\s*([A-Za-z0-9\s]*)*(\r?\n)/);
      var vehyear = (tmp && tmp[1]) ? tmp[1].trim() : 'No vehyear';

      tmp = content.match(/DownPayment:\s* ([$][0-9]*[,]*[0-9]*[,][0-9]*[.][0-9]*)*(\r?\n)/);//"37 year(s) 00 month(s)" "Pension" 
      var downpay= (tmp && tmp[1]) ? tmp[1].trim() : 'No downpay';

      sheet.appendRow([fname,lname,address,city,state,zip,cphone,email,proptype,rent,yearatadd,empname,emptitle,bphone,salary,empyear,make,model,extcolor,intcolor,vehyear,downpay]);


    }//subject if
    } // End if

  } // End for loop
}
你能帮我吗?感谢

1 个答案:

答案 0 :(得分:1)

您正在使用一次性触发器,该触发器将在脚本运行后运行1分钟。你需要的是一个每隔n分钟自动运行的重复触发器。

ScriptApp.newTrigger("parseEmailMessages")
.timeBased().everyMinutes(5).create();

在任何一种情况下,收到电子邮件时脚本都不会自动运行。您需要为已经处理过的电子邮件保留某种标记,否则它们将多次登录到工作表中。一个好的选择是标记带有特定标签的电子邮件,然后在下一次搜索迭代中忽略这些电子邮件。