質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

Q&A

解決済

4回答

437閲覧

new RegExpでうまくデータ抽出できなくて、Cannot read property '0' of null エラー発生する

MISIAN-MISIAN

総合スコア73

Google Apps Script

Google Apps ScriptはGoogleの製品と第三者のサービスでタスクを自動化するためのJavaScriptのクラウドのスクリプト言語です。

0グッド

0クリップ

投稿2022/05/18 04:54

var regNumber = new RegExp('保険者番号:' + '.*?' + '\r');  の中身が空っぽのままでうまく抽出できない。

Logger.log(body);で中身を確認したら下記の情報は入っています

保険者番号:111
保険証記号:11111

new RegExpで情報を抽出できない原因はありますでしょうか。
ご教授お願いいたします。

for(var i = 0; i < Messages.length; i++) { for(var j = 0; j < Messages[i].length; j++) { var id = Messages[i][j].getId(); if(!hasId(id)){ var body = Messages[i][j].getPlainBody(); var date = threads[i].getMessages()[j].getDate(); var regNumber = new RegExp('保険者番号:' + '.*?' + '\r'); var Number = body.match(regNumber)[0].replace('保険者番号:', '').replace('\r', ''); var regName = new RegExp('保険証記号:' + '.*?' + '\r' ); var Name = body.match(regName)[0].replace('保険証記号:', '').replace('\r', ''); id

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

int32_t

2022/05/18 04:59

行末が \r であることは間違いないですか? \n ではなく。
YAmaGNZ

2022/05/18 05:05 編集

最後が’\r’じゃなくって抽出できてないとか?
MISIAN-MISIAN

2022/05/18 05:27

ありがとうございます。 mac os 使用してたので\n でした。正規表現のミスでした。 ご指摘ありがとうございました
Zuishin

2022/05/18 06:37

過去に同じ質問をしていますが、今後そのようなことはやめてください。 過去の質問は回答がついているので、この質問を引用して自己解決してください。
guest

回答4

0

自己解決

正規表現を\r出ななくて\n に変更で解決しました

ご指摘ありがとうございました

投稿2022/05/18 05:28

編集2022/05/18 07:58
MISIAN-MISIAN

総合スコア73

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

インターネット上を配達中の電子メールは改行コードが \r\n ですが、GAS 上では \n に置換されていたような記憶があります。

なんにせよ、改行コードに頼らないコードにすると以下のようになるでしょう。

js

1const number = body.match(/保険者番号:(\w+)/)[1]; 2const name = body.match(/保険証記号:(\w+)/)[1];

投稿2022/05/18 05:13

編集2022/05/18 05:15
int32_t

総合スコア20884

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

bodyをコードのように定義し、実施したところ、問題なく「保険者番号」が取得できました。
body部分に「\r」が含まれているかの確認を行なった方が良いのではないでしょうか?

gs

1function myFunction567() { 2 3 let body = 4`保険者番号:111\r 5保険証記号:11111` 6 console.log(`body: ${body}`) 7 8 let regNumber = new RegExp('保険者番号:' + '.*?' + '\r'); 9 console.log(`regNumber: ${regNumber}`) 10 console.log(body.match(regNumber)[0].replace('保険者番号:', '').replace('\r', '')) 11}

実行ログ

log

114:05:37 情報 body: 保険者番号:111 2保険証記号:11111 314:05:37 情報 regNumber: /保険者番号:.*?\r/ 414:05:37 情報 111

投稿2022/05/18 05:08

k.a_teratail

総合スコア845

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

js

1 for(var i = 0; i < Messages.length; i++) { 2 for(var j = 0; j < Messages[i].length; j++) { 3 var id = Messages[i][j].getId(); 4 if(!hasId(id)){ 5 var body = Messages[i][j].getPlainBody(); 6 var date = threads[i].getMessages()[j].getDate(); 7 8 var regNumber = /保険者番号:\d{1,999}\r/ 9 var Number = body.match(regNumber)[0].replace('保険者番号:', '').replace('\r', ''); 10 var regName = /保険証記号:\d{1,999}\r/ 11 var Name = body.match(regName)[0].replace('保険証記号:', '').replace('\r', ''); 12 13 id

これでどうでしょう。
bodyを保険者番号:111\r保険証記号:11111\rとして実行しています。

投稿2022/05/18 05:06

編集2022/05/18 05:06
Waki285

総合スコア2014

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問