2017-08-23 9 views
1

私は、appscriptとgetplainbody()関数を使ってGmail本体を解析しようとしています。Gmailのアプリケーションスクリプトの改行getplainbody関数

私がどのように見える解析しようとしている電子メールの本文:私は取得しています

function extractEmails() { 

// get the spreadsheet 
var ss = SpreadsheetApp.getActiveSpreadsheet(); 
var sheet = ss.getActiveSheet(); 
var label = sheet.getRange(1,2).getValue(); 

// get all email threads that match label from Sheet 
var threads = GmailApp.search ("label:" + label); 

// get all the messages for the current batch of threads 
var messages = GmailApp.getMessagesForThreads (threads); 

var emailArray = []; 

// get array of email addresses 
messages.forEach(function(message) { 
message.forEach(function(d) { 

    var messagebody = d.getPlainBody() 
    var name = messagebody.match(new RegExp('\*Name\:\*' + "(.*)" + ' ')); 


    emailArray.push(d.getFrom(),d.getTo(),name); 
    }); 
}); 

SyntaxError: Invalid quantifier *. (line 56, file "Code") 

ラインをこれまでのところ、私は以下のいる

*Name:* tom jones 
    *Email:* [email protected] 
    *Phone Number:* 3021234567, [Hello, 

を56は:

var name = messagebody.match(new RegExp('\*Name\:\*' + "(.*)" + ' ')); 

私は間違っていますか?

答えて

2

あなたは二重の地獄をエスケープにつながる文字列から正規表現を構築しています。 JavaScriptの文字列はエスケープのためにバックスラッシュを使います。このように、文字列*Name:*(.*)

str = '\*Name\:\*' + "(.*)" + ' ' 

結果を実行する - アスタリスクの前にバックスラッシュがなくなっていることに注意してください。文字列の作成目的でエスケープ文字として扱われました。しかし、あなたはまだそれらを、RegExpオブジェクトのレベル、地獄の第2レベルで脱出する必要があります。

ので、\\としてバックスラッシュ自体をエスケープのいずれかまたは(より良い)正規表現リテラル使用します。例えば

messagebody.match(/\*Name:\*(.*) /)