Google Apps ScriptでWebデータ取得では使う正規表現はこれだけ!

2019-03-07

Googleスプレッドシートでは、プログラム(Google Apps Script)を使ってWebページのデータを取得する方法があります。それがUrlfetch関数を使用した方法です。

前回は、URLfetch関数の概要を紹介しました。

Googleスプレッドシートには、Web上からデータを抽出する関数が用意されています。これらについては、こちらで紹介してきました。 GoogleスプレッドシートIMPORTXML関数:プログラム不要Webデータを取得 GoogleスプレッドシートIMPORTHTML関数:プログラム不要Webデータを取得 GoogleスプレッドシートIMPORTFEED関数:プログラム不要Web更新情報を取得スクリプトを使ってWebデータを取得する関数これらの他にもGoogleスプレッドシートでは、プログラム(Google Apps Script)を使ってWebページのデータを取得する方法がありま...

そこでも述べたとおり、URLfetch関数は文字列操作関数と組み合わせて使うことで力を発揮します。今回は、条件にあった文字列を抽出するための正規表現の使い方を紹介します。

ポイント 正規表現とは

テキストの文字列から、条件にあった文字列を抽出するための「条件部」の書き方です。正規表現だけで本が出ているくらい奥が深いものです。

正規表現とは、文字列内で文字の組み合わせを照合するために用いられるパターンです。JavaScript では、正規表現はオブジェクトでもあります。これらのパターンは RegExp の exec および test メソッドや、String の match、replace、search、および split メソッドで使用できます。本章では、JavaScript の正規表現について説明します。

この正規表現と文字列検索関数・置換関数などを組み合わせると効率的に必要な処理が可能となります。

ポイント Webデータ取得に最低限使う正規表現

しっかり学べば効率よく必要な文字列を抽出できるようになる正規表現。しかし、学ぶ時間・試行錯誤する時間が必要です。今回は、正規表現を使って2つのキーワードに挟まれた文字列を抽出する方法「だけ」を紹介します。

それが、前回紹介したソースの中のこちらの2行です。

  var myRegexp = /<title>([\s\S]*?)<\/title>/i;
  var tit = myRegexp.exec(response);

「文字列1<title>」と「文字列2</title>」で挟まれる文字列を抽出します。

抽出結果は、

[条件付きの抽出文字列,抽出文字列]

という配列形式で出力されます。抽出文字列を使いたい場合には、tit[1]を使用します。(GASの配列は「0」から始まるため、配列の2つ目の値は「1」と指定することになります。)

ポイント まとめ

今回は、URLfetch関数で抽出したHTMLから、正規表現を使って特定の文字列の間にある文字列を抽出する方法を紹介しました。正規表現の細かい説明は一切していませんが、このフォーマットを使えば、特定の文字列の抽出ができます。

まずは、このやり方を試してみて下さい。そして、こんなことができないか?こういう抽出ができないかなど出てきたら、改めて調べてみましょう。

Copyright(c) 2016 e-Shikumi-Labo All Rights Reserved.