Google Apps Scriptで正規表現でマッチした文字列から不要な部分を削除する

★気に入ったらシェアをお願いします!


trim

photo credit: Symic 000ElmTreeVitality via photopin (license)

みなさん、こんにちは!
タカハシ(@ntakahashi0505)です。

Google Apps Scriptでフォーム送信メールからデータを抽出してスプレッドシートに登録するツールを作成しております。

前回の記事はコチラです。

Google Apps Scriptで正規表現を使って必要な情報を抽出する最も簡単なスクリプト
Google App Scriptを使ってGmailで届いたフォーム送信情報をスプレッドシートに蓄積する方法の初回。正規表現とは何か、またGASで正規表現により文字列を抽出する最も簡単なスクリプトを紹介します。

正規表現というテクニックを使って文字列からデータを抽出する方法をお伝えしました。

例えば「名前:鈴木」「年齢:30才」という文字列のパターンを拾うことができましたが、本当に欲しいのは「鈴木」だったり、「30」だったりするわけですね。

ですから、正規表現で文字列を抽出した場合は、いらない部分をザクザク削る処理が必要になるのが一般的です。

ということで、今回はGASで正規表現で抽出した文字列から、欲しいデータのみを取り出す方法をお伝えします。

では、いってみましょう。

前回のおさらい

では、まず前回のおさらいから。

作成したスクリプトはコチラ。

冒頭に用意したstrはメール本文を意識した文字列ですが、そこから

  • 「名前:」ではじまって改行で終わる文字列のパターン、つまり「名前:鈴木\n」
  • 「年齢:」ではじまって「才」で終わる文字列のパターン、つまり「年齢:30才」

を抽出することができます。

今回は、ここから「鈴木」または「30」だけを残して不要な部分を削っていく処理を作っていきたいと思います。

正規表現でマッチした文字列の不要な部分を削除する

replaceメソッドで部分文字列を削除する

文字列の一部び削除はreplaceメソッドを使って実現することができます。

本来、replaceメソッドは文字列の部分文字列を置換するメソッドで以下のように書きます。

文字列.replace(部分文字列, 置換文字列)

この置換文字列を空文字(”)とすることで、部分文字列の削除と同様の処理となるというわけです。

文字列.replace(部分文字列, ”)

不要な部分を削除する処理を入れたスクリプト

これにより、前述のスクリプトをいじってみると

となります。

matchメソッドの後の部分で「[0]」としているのは、配列から最初の要素を取り出すためです。matchメソッドの戻り値は、パターンにマッチした文字列の配列ですからね。

ですが…ちょいと冗長ですよね。同じような処理が続いちゃっているので、整理していきましょう。

正規表現による抽出とデータの取り出しをする関数

newによる正規表現の生成

その事前準備として、正規表現の生成方法として、正規表現リテラルとは別の方法をお伝えしておきます。

JavaScriptで正規表現はRegExpオブジェクトというオブジェクトですので、newキーワードで生成をすることができます。

new RegExp(正規表現, フラグ)

引数の正規表現は文字列で指定できますので、変数を使うことができます。フラグは前回の記事でお伝えしたものと同じです。

パターンマッチを抽出し必要なデータを取り出す関数

それを踏まえて、文字列strから最初の文字列preではじまり、最後の文字列sufで終わるというパターンマッチを抽出し、さらに必要なデータのみを取り出す関数を作りました。

以下の関数fetchDataです。

この関数を使えば、先ほどのスクリプトは、以下のようにスッキリ書き換えることができます。

まとめ

以上、Google Apps Scriptで正規表現でマッチした文字列から不要な部分を削除する方法についてお伝えしました。

  • replaceメソッドで文字列の部分文字列を削除する
  • newキーワードによる正規表現の生成

ちょいと地味な内容ですが、けっこう便利ですよ…!

では、次回は実際にGmailのメッセージからデータを抽出していきますね。

Google Apps ScriptでGmailの受信メールから正規表現でデータを抽出する
Google Apps Scriptでフォーム送信メールからデータを抽出してスプレッドシートに登録するツールを作成しています。今回はGmailに届いたメールから正規表現でデータを抽出するスクリプトを紹介します。

どうぞお楽しみに!

連載目次:GASで正規表現を使ってデータを抽出&登録

正規表現を使うとGoogle Apps ScriptでメールやHTMLドキュメントからデータを抽出することができます。本シリーズでは、フォーム送信の通知メールからデータを抽出してスプレッドシートに追加するツールの作成を目指します。
  1. Google Apps Scriptで正規表現を使って必要な情報を抽出する最も簡単なスクリプト
  2. Google Apps Scriptで正規表現でマッチした文字列から不要な部分を削除する
  3. Google Apps ScriptでGmailの受信メールから正規表現でデータを抽出する
  4. Google Apps Scriptでメールから正規表現で抽出したデータをスプレッドシートに蓄積する方法
  5. Google Apps ScriptでGmailのメッセージIDを取得する方法
  6. Google Apps Scriptでスプレッドシートの列データを配列として取得する方法