0

このスクリプトは、電子メールからプレーン テキストを読み取り、それらを別の関数に送信して、正確な値をスプレッドシートに書き込みます。

私の問題は、電子メールのプレーンテキストからデータ (日付、名前など) を取得することです。

関数は次のとおりです。

   var threads = GmailApp.search('label:aoaoaoaoa');
   Logger.log(threads);
   Logger.log(threads[0].getMessages());
   Logger.log(threads[0].getMessages().length);
   var messages;// = threads[0].getMessages();
   var ContentEmail;// = messages[0].getBody();

   var bodyRe = new RegExp("(?=start date)(.*)(?=finish date)");

   for (var i = 0; i < threads.length; i++) {
    messages = threads[i].getMessages()
    ContentEmail = messages[0].getPlainBody();

   var myArray = bodyRe.exec(ContentEmail);
   Logger.log(myArray); 

myArray が null です。2 つの単語の間のテキストを取得するために、多くの正規表現表記法を試しました。それらのいくつかは null を返します。他のものは、スクリプトで SyntaxError を引き起こしました。

これは、日付、名前、電話番号、電子メール、場所を取得したいメッセージの例です。

Confirmation Code: CAXNA3JAA   Tue, October 01, 2013
start date     Tue, October 08, 2013
finish date 
Place: AOA Studio <http://www.**********************>
[image: Ali] <http://www.**********************>
Ali <http://www.***************************>
+49 000 000 00000
******@gmail.com

または、Google スクリプトの HTML 関数を使用してメールからデータを読み取ることをお勧めしますか? ここ

4

1 に答える 1

0

複数行を使用して指定できる場合は、次を使用できます。

^start date\s*(.+)

ただし、これには検索日が次に表示されることは含まれません。

そうでなければ、これは私にとってはうまくいきました:(改行に注意する必要があるかもしれません)

start date\s*(.+)\nfinish date

含める\r\n、使用できます。

start date\s*(.+)(\r|\n)+finish date
于 2013-10-08T17:17:32.287 に答える