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

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

新規登録して質問してみよう
ただいま回答率
85.46%
Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

Q&A

1回答

2317閲覧

メール本文から項目を抽出する処理で、改行を含む文章が1行しか抽出できません。

aoi7MRyo

総合スコア3

Google スプレッドシート

Google スプレッドシートは、フリーで利用できる表計算ソフト。Webアプリのためインターネットに接続することで利用できます。チャートやグラフの作成のほか、シートを他のユーザーと共有したり、同時に作業を進めることも可能です。

Google Apps Script

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

メール

メールは、コンピュータネットワークを利用し、 情報等を交換する手段のことです。

0グッド

0クリップ

投稿2021/08/23 03:11

編集2021/08/23 03:14

前提・実現したいこと

メール本文から項目を抽出する処理で、文末にある備考欄を抽出したいのですが
複数行あった場合1行しか抽出することができません。
文中であれば、次の項目名を終点にしてコードを記載する方法があるかと思いますが、
文末の場合はどのように記載すれば複数行抽出できますでしょうか?

---メール本文ここから---
~~~(略)~~~
■氏名:○○
■住所:○○○○
~~~(略)~~~
■備考:数年前から所属している。
今年、会長に就任。

---メール本文ここまで---

該当のソースコード

//■氏名 body_str1 = fetchData(body,'■氏名:','\r\n'); //■住所 body_str4 = fetchData(body,'■住所:','\r\n'); //■備考 body_str40 = fetchData(body,'■備考:',''); //正規表現を使って文字列preとsufに挟まれている文字列を返す関数 function fetchData(str, pre, suf) { var reg = new RegExp(pre + '.*' + suf); var data = str.match(reg)[0] .replace(pre, '') .replace(suf, ''); return data; }

試したこと

body_str40 = fetchData(body,'■備考:','\r\n');
最初に作成した際に上記の記載をしていましたが、下記の記載にしても解決しませんでした。
body_str40 = fetchData(body,'■備考:','');

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

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

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

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

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

guest

回答1

0

fetchDataの正規表現を変更し、

diff

1- var reg = new RegExp(pre + '.*' + suf); 2+ var reg = new RegExp(pre + '[\s\S]*?' + suf);

末尾を示すメタ文字$を指定する。

GAS

1body_str40 = fetchData(body,'■備考:','$');

投稿2021/08/23 04:12

Daregada

総合スコア11990

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

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

aoi7MRyo

2021/08/23 04:43 編集

迅速なご回答ありがとうございます! 改行を含めた複数行を抽出することができました。 ただ、抽出した後にスプレッドシートへ書き込む際、 「■備考」だけ空の1行が入るようになってしまいました。 [スプレッドシートの備考カラム] ------------------------ 数年前から所属している。 今年、会長に就任。 ------------------------ body_str40 = fetchData(body,'■備考:','$'); の後のLogger.log( body_str40 );では空の1行は見られないのですが 書き込みの際に入ってしまっているのでしょうか?
Daregada

2021/08/23 05:34

メール本文の末尾は、質問文によると、 > ~~~(略)~~~ > ■備考:数年前から所属している。 > 今年、会長に就任。 > > ---メール本文ここまで--- となっていますけど、末尾には改行(\r\n)が2連続で入っているのでしょうか?
aoi7MRyo

2021/08/23 11:01

お伝えしておらず申し訳ございません。 正しくは、下記のように記載されています。 ~~~(略)~~~ ■備考:数年前から所属している。 今年、会長に就任。 ... [メッセージの一部が表示されています] メッセージ全体を表示
Daregada

2021/08/23 11:16

それはGmailの画面表示じゃないですか? 知りたいのは、コードのこの部分に至る前の段階で、変数bodyに設定された内容の末尾数行が、実際にどのようなものであるかということです。 例えば、「今年、会長に就任。\r\n\r\n」のように、末尾が必ず改行2つ連続になっているなら、別の書き方で処理できます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問