2017-05-16 10 views
0

以前はExcelでVBAに習熟していましたが、現在はGoogle Scriptで何かをしようとしています。私は本当に立ち往生しています。Google Apps Scriptで電子メールを解析すると、正規表現に問題はありますか?

Gmailから標準化されたメールのデータをGoogleシートに抽出したいと考えています。私はこれまで相談してきた問題にいくつかのスレッドがあり、電子メールの本文をシートに取り込むことはできますが、解析することはできません。

私はそれは私もGoogleのスクリプトに新しいブランドだ、とさえデバッガが、それは前にした(現在は動作を停止しているようですので、誰でも、なぜ提案することができた場合に感謝されるtests OK on regex101

正規表現に新しいですが、これは)。

function processInboxToSheet() { 
    var label = GmailApp.getUserLabelByName("NEWNOPS"); 
    var threads = label.getThreads(); 
    // Set destination sheet 
    var sheet = SpreadsheetApp.getActiveSheet(); 
    // Get all emails labelled NEWNOPS 
    for (var i = 0; i < threads.length; i++) { 
    var tmp, 
     message = threads[i].getMessages()[1], // second message in thread 
     content = message.getPlainBody(); // remove html markup 
    if (content) { 

     // search email for 'of:' and capure next line of text as address 
     // tests OK at regex101.com 
     property = content.match(/of:[\n]([^\r\n]*)[\r\n]/); 

     // if no match, display error 
     var property = (tmp && tmp[1]) ? tmp[1].trim() : 'No property'; 
     sheet.appendRow([property]); 
    } // End if 
    // remove label to avoid duplication 
    threads[i].removeLabel(label) 
    } // End for loop 
} 

は、私はOKシートへの「コンテンツ」を追加することができますが、正規表現で必要とされるアドレスのテキストを抽出することはできません。

は、ここに私の基本的な機能です。コンテンツ次のように表示されます
123どれストリート、Anytown、AN1 1AN

DATE:2017年5月5日
価格:£241,000

売り手の詳細を購入するための

NOPSを
NAME:読書のための夫人売主

感謝:)

答えて

1

.match()の戻り値は配列です。アドレスを含む最初のキャプチャグループは、tmp変数は、その配列ではなく、property変数が割り当てられている必要がありますように見え、.match()にあなたのコールの後に次の行に基づいてインデックス1

になります。

var property = (tmp && tmp[1]) ? tmp[1].trim() : 'No property'; 

その行がそうでない場合は、文字列「いいえプロパティ」を割り当て、.match()がnullでなく、インデックス1の値を持つものを返した場合、その値をトリミングしてpropertyに割り当てる、と言います。

ので、この行を変更してみてください。これに

property = content.match(/of:[\n]([^\r\n]*)[\r\n]/); 

tmp = content.match(/of:[\n]([^\r\n]*)[\r\n]/); 
0

おかげケビンは、私がデバッグ中に、私はそれを変更していなければならないと思います。

問題は私の正規表現の最後にありました。いくつかの試行錯誤の後、次のように働いた:

tmp = content.match(/of:[\r\n]+([^\r\n]+)/); 
関連する問題