2016-05-17 5 views
0

メールを受け取ったときに自動的に呼び出されるスクリプトを書いています。私がそれを実行すると、初めて実行されます。次回はトリガを実行する必要があります。しかし、それは私にエラーを与える。電子メールの受信時に自動的にスクリプトを呼び出す方法は?

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*([[email protected]]+)(\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 
} 

私を助けてくれますか?ありがとう

+0

2回目のエラーは何ですか?何が起こっているかについての有益な情報を含むことができます。 – srowland

答えて

1

スクリプトを実行してから1分後に実行されるワンタイムトリガーを使用しています。必要なのは、n分ごとに自動実行する繰り返しトリガーです。

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

どちらの場合も、メールを受信するとスクリプトは自動的に実行されません。すでに処理されている電子メールには、何回もログインする必要があります。良いオプションは、メールに特定のラベルを付けて、次の検索反復でこれらのメールを無視することです。

+0

ありがとうございます。既にスプレッドシートに書き込まれている電子メールにラベルを付ける方法と無視する方法を教えてください。 –

関連する問題