2017-09-10 4 views
0

このスクリプトは動作しています(私が期待している出力が得られます)が、私には「定義できませんでした」メソッドを呼び出すことができます(16行目)。 、エラーが17などGoogle Appsスクリプトのメッセージループエラーが発生しました。

function emf() 
var ss = SpreadsheetApp.openById('####').getSheetByName('EMF'); 
{ 
    var label = GmailApp.getUserLabelByName("tkh_emf"); 
    var threads = label.getThreads(); 

    for (var i=0; i<threads.length; i++) 
    { 
    var messages = threads[i].getMessages(); 
    for (var j=0; j<messages.length; j++) 
    { 
     var fullname = messages[j].getPlainBody().split("Name*: ")[1].split("\n")[0]; // used for GMap column title 
     var fname = fullname.split(" ")[0]; 
     var lname = fullname.split(" ")[1]; 
     var email = messages[j].getPlainBody().split("Email*: ")[1].split("\n")[0]; 
     var phone = messages[j].getPlainBody().split("Phone*: ")[1].split("\n")[0]; 
     var addr = messages[j].getPlainBody().split("Street Address*: ")[1].split("\n")[0]; 
     var city = messages[j].getPlainBody().split("City*: ")[1].split("\n")[0]; 
     var find = messages[j].getPlainBody().split("hear about us?*: ")[1].split("\n")[0]; 
     var referrer = messages[j].getPlainBody().split("Referrer Name: ")[1].split("\n")[0]; 
     var photo = messages[j].getPlainBody().split("(max size 2MB): ")[1].split("\n")[0]; 
     var site = messages[j].getSubject().split("Contact ")[1].split("from")[0]; 
     var date = messages[j].getDate(); 
     var work = messages[j].getPlainBody().split("Brief description of work requested*: ")[1].split("Visitor IP: ")[0]; 
     var ip = messages[j].getPlainBody().split("Visitor IP: ")[1].split("Follow @emfteam")[0]; 

     // var rowNum = lastRow + 1; 
     ss.appendRow([fullname, fname, lname, date, work, photo, email, phone, addr, city, find, referrer, site, ip,'pending','pending']);  
    } 
     // threads[i].removeLabel(label); 
    } 
} 

行目に移動ここで私は、私はなぜそれは私にエラーを与えている?何をしないのです...

を掻き落としていたすべてのメッセージの形式だ?

+0

'Logger.log(messages [j]);'行を 'var fullname = ...'の前に追加してください。コードを実行し、ctrl + enterを押してログを確認します。 'if(!messages [j] .getPlainBody())continue;'という行を追加して、普通のボディを得ることができないすべてのメールをスキップさせることもできます。 – SpiderPig

+0

これは、予想される4個のメッセージの代わりに5個のメッセージをチェックしていますが、そのラベルのメッセージが4個しかありません... 'i testing123

+0

私はこれらの5つのメッセージの1つが実際の電子メールではないことを推測しています。たとえば、その1つをスキップします。私はすでに説明したように続きます。 – SpiderPig

答えて

1

0123でエラーの原因となるメッセージはスキップできますおよびcatch。ここに例があります

function emf() 
{ 
    var ss = SpreadsheetApp.openById('####').getSheetByName('EMF'); 
    var label = GmailApp.getUserLabelByName("tkh_emf"); 
    var threads = label.getThreads(); 

    for (var i=0; i<threads.length; i++) 
    { 
    var messages = threads[i].getMessages(); 
    for (var j=0; j<messages.length; j++) 
    { 
     try { 
     var plainBody = messages[j].getPlainBody(); 
     var fullname = plainBody.split("Name*: ")[1].split("\n")[0]; // used for GMap column title 
     var fname = fullname.split(" ")[0]; 
     var lname = fullname.split(" ")[1]; 
     var email = plainBody.split("Email*: ")[1].split("\n")[0]; 
     var phone = plainBody.split("Phone*: ")[1].split("\n")[0]; 
     var addr = plainBody.split("Street Address*: ")[1].split("\n")[0]; 
     var city = plainBody.split("City*: ")[1].split("\n")[0]; 
     var find = plainBody.split("hear about us?*: ")[1].split("\n")[0]; 
     var referrer = plainBody.split("Referrer Name: ")[1].split("\n")[0]; 
     var photo = plainBody.split("(max size 2MB): ")[1].split("\n")[0]; 
     var site = messages[j].getSubject().split("Contact ")[1].split("from")[0]; 
     var date = messages[j].getDate(); 
     var work = plainBody.split("Brief description of work requested*: ")[1].split("Visitor IP: ")[0]; 
     var ip = plainBody.split("Visitor IP: ")[1].split("Follow @emfteam")[0]; 

     ss.appendRow([fullname, fname, lname, date, work, photo, email, phone, addr, city, find, referrer, site, ip,'pending','pending']);  
     } catch(e) { 
     } 
    } 
    } 
} 
関連する問題