正規表現での文字列抽出がうまくいかない
解決したいこと
gasを使ってgmailに届いた本文から必要な項目を抽出し、スプレッドシートの該当セルに転記するということをしたいです。
発生している問題・エラー
正規表現を使って文字列検索をしているのですが、うまくできません。対象としているメール文章は以下の通りです。
該当するソースコード
function myFunction() {
//メールの中から検索条件に合致したメールスレッドの検索//
const threads= GmailApp.search('subject:"【楽天市場】注文内容ご確認(自動配信メール)" newer_than:30d' );
Logger.log(threads);
for (const thread of threads){
Logger.log(thread);
const messages = thread.getMessages();
Logger.log(messages);
for (const message of messages){
Logger.log(message);
const mail_body = message.getPlainBody()
Logger.log(mail_body);
//正規表現で必要な情報を入手 ※分からないこと1
const reg_shop_name = new RegExp(/ショップ名 :(.*\r)/);
const shop_name = mail_body.match(reg_shop_name);
Logger.log(shop_name);
※分からないこと2 注文者を抽出するのにorder date という変数使ってるのはただのミスです
const order_date = mail_body.match(/[注文者].*/);
Logger.log(order_date);
}
}
}
分からないこと1
/ショップ名 :(.*\r)/ という正規表現で検索をしているのに、なぜ抽出結果が2つ出てくるのか。
(メールの最初に出てくるのは[ショップ名 :]という風にかっこがついているのにどうして?)
分からないこと2
/[注文者].*/で検索をして、なぜリターンが[注文情報が楽天市場のサーバに(以下略)]ということになるのか。
【注文者】で検索しているのになぜ【注文情報が】が抽出されるのかちんぷんかんぷんです…。
自分で試したこと
分からないこと1に関しては結果が2つ出てきてしまうので、仕方なく[shop_name[1]]として扱えばうまくできそうでした。
分からないこと2に関しては/注文者/に続く表現を色々変えてみましたがうまくいきませんでした。
初心者の質問・見苦しいコードですみません。