liquidjumper Googleスプレッドシート,アプリ/ネットサービス Googleスプレッドシート-URLを指定してHTMLからテキストや表データをインポートする方法

Googleスプレッドシート-URLを指定してHTMLからテキストや表データをインポートする方法

googleSpreadsheet_html-data-import_topimage

・WEBページに掲載されている価格データをGoogleスプレッドシートで参照したい
・HTMLドキュメントの表をGoogleスプレッドシートにインポートしたい

WEBページに掲載されている記事や数値データ、商品の比較表などをGoogleスプレッドシートにインポートしたいと思ったことは有りませんか?

ただの記事なら、コピー&ペーストで問題にならないかもしれませんが、価格や商品リストなど、内容が変動する可能性があるものに関しては、ドキュメントを参照したいところ。

Googleスプレッドシートにはツリー構造ドキュメントを参照しデータをインポートする関数があり、これを使えばHTMLからデータのインポートも可能なはず。

この記事では、ツリー構造ドキュメントを参照する関数を使って、WEBページなど指定したURLのHTMLドキュメントを参照し、Googleスプレッドシートにデータをインポートする方法を紹介します。


GoogleスプレッドシートにURLを指定してHTMLからデータをインポートする

GoogleスプレッドシートでURLを指定したHTMLドキュメントのデータをインポートするには、次の関数を使用します。

IMPORTXML関数

IMPORTXML関数は、XMLやHTML、そしてCSV、TSV、RSS フィード、などのツリー構造のドキュメントから、データの参照ができる関数です。

使い方も簡単で、IMPORTXML関数にURLとツリー構造ドキュメントの参照パス[XPath ]を指定するだけ。

IMPORTXML(URL, XPath)

URLにHTMLドキュメントのアドレス、XPathに参照したい箇所のタグ等を示す構文を指定すれば、HTMLからデータをインポートできそう。

XPath (XML Path Language)をGoogle Chromeで調べる

HTMLドキュメントのアドレスは理解できるとして「XPath」って何?

XPath (XML Path Language)とは、XMLやHTMLなど、ツリー構造で書かれたドキュメントの要素(<h1>,<div>)や属性(class , id)などを、

“//a/@href”」や「”/html/body/div[2]/div[4]/div[5]/div[5]/div[4]/div[7]”」の様に示す構文です。


簡単に言うとツリー構造ドキュメント内のアドレスを示す事ができ、例えばHTMLドキュメントに書かれた価格データのテキストを取得したいと思ったら、そのデータが書かれている箇所を示すXPathを指定して参照する。

それが XPath (XML Path Language) です。

■Google ChromeでXPathを確認

XPath の役割は分かりましたでは、XPath 自体はどうやって確認したら良いの?

HTMLドキュメントのXPathは、HTMLを表示するWEBブラウザで簡単に確認する事ができます。

Microsoft EdgeやFirefoxなど様々なWEBブラウザでXPathの確認はできますが、今回はGoogle ChromeでXPathを確認・取得する方法を紹介。

1)Google ChromeでHTMLドキュメントを表示
2)F12キー又は、Google Chromeの設定 > その他のツール > デベロッパーツール をクリック

Google Chromeの設定 > その他のツール > デベロッパーツール


デベロッパーツールに表示されるHTMLから目的の箇所を探します。

例ではAmazon.co.jpの商品ページの、[商品タイトルのテキスト]が書かれている箇所を探し選択、
右クリックメニューから、Copy > Copy XPath をクリック。
(Copy full XPath でも問題有りませんが、記述が長くなるので拘りがなければ Copy XPathで良いかと)

Copy > Copy XPath
画像:Amazon.co.jp


Copy XPathをクリック後にテキストアプリ等にペースト。
HTMLドキュメントから[商品タイトルのテキスト]が書かれた箇所を示すXPathが取得できました。

//*[@id="title"]

IMPORTXML関数にURLとXPath クエリを指定してデータをインポート

それでは、IMPORTXML関数にURLと取得したXPathを指定して、スプレッドシートに選択箇所[商品タイトルのテキスト]をインポートしてみましょう。

IMPORTXML(URL, XPath)

IMPORTXML関数の使い方は、第1引数に”https://”を含むURLを「””」で囲んで指定、第2引数にXPathをこちらも「””」で囲んで指定します。

=IMPORTXML("https://www.amazon.co.jp/Adobe-Creative-Cloud-%E3%82%B3%E3%83%B3%E3%83%97%E3%83%AA%E3%83%BC%E3%83%88-%E3%82%AA%E3%83%B3%E3%83%A9%E3%82%A4%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89%E7%89%88/dp/B00FOHQZPI/ref=sr_1_5?__mk_ja_JP=%E3%82%AB%E3%82%BF%E3%82%AB%E3%83%8A&dchild=1&keywords=adobe&qid=1624850023&sr=8-5","//*[@id='title']")


ココで注意する点は、取得したXPathを確認すると分かりますが、「//*[@id=”title”]」とid項目が「””」で囲まれています。

このままIMPORTXML関数に、「””」で囲み指定すると、エラーが返されデータをインポートできません。

なので、取得したXPathをIMPORTXML関数に指定する場合は、id項目の「””」を「”」に書き換える必要があります。

IMPORTXML("URL" , "//*[@id="title"]")

IMPORTXML("URL" , "//*[@id='title']") //「""」を「''」に書き換え


いちいち書き換える手間と、数式の書きやすさ、見やすさを考慮すると、URLとXPathを入力したセルの番号を参照するのが最も効率的。

対象のURLと取得したXPathをセルに入力し、IMPORTXML関数にセル番号を指定。

[商品タイトルのテキスト]を取得してみましょう。

=IMPORTXML(B1, B2)


指定したURLのHTMLドキュメントから、商品タイトル「Adobe Creative Cloud コンプリート|12か月版|Windows/Mac対応|オンラインコード版」を取得、表示できました。

指定したURLのHTMLドキュメントから、商品タイトルを取得、表示できました。

HTMLドキュメントのtableをインポートする

IMPORTXML関数を使って指定したHTMLドキュメントのデータを取得する方法は紹介しましたが、目的や取得箇所によっては、余り都合が良くない場合があります。

例えば、HTMLの<tabel>タグで構築された表を、IMPORTXML関数を使い先程と同じ要領でインポートすると、スプレッドシートで使うデータとしては、少し問題がある結果に。

Adobe Creative Cloud コンプリート|12か月版|Windows/Mac対応|オンラインコード版
画像:Amazon.co.jp


>>Adobe Creative Cloud コンプリート|12か月版|Windows/Mac対応|オンラインコード版

IMPORTXML関数でHTMLドキュメントのtableをインポート

前項の方法と同じくGoogle Chromeを使って<tabel>タグで構築された表[商品比較表]の箇所をXPathを取得。

IMPORTXML関数にURLとXPathを指定すると、下の画像で分かるように表の構成を無視し、表に含まれるテキストを一つの文章としてインポートしてしまいます。

HTMLドキュメントの表を、表のままスプレッドシートにインポートしたいのに、これでは目的を果たせません。

表に含まれるテキストを一文の文字列としてインポート

IMPORTHTML関数でHTMLドキュメントのtableをインポート

Googleスプレッドシートで、URLを指定してHTMLドキュメントのデータをインポートする関数は他にもあります。

そして、HTMLのテーブルタグ<table>、リストタグ<li>を、テーブルやリストのままインポートしたい場合に使う関数が、

IMPORTHTML関数

IMPORTHTML関数の使い方は、第1引数にURL、第2引数にテーブルタグだったら「”table”」、リストタグだった「”list”」と指定、第3引数にHTMLドキュメント内で指定したタグの番号を指定。


IMPORTHTML(“URL”,”table”,1)


第3引数に指定するタグの番号は、XPahtの文字列で確認できます。

//*[@id=”aplus”]/div/div[3]/div/div[1]/div[1]/div/table
//*[@id=”aplus”]/div/div[4]/div/div[1]/div[1]/div/table


それでは、IMPORTXML関数でインポートした同じ表[商品比較表]を、IMPORTHTML関数でインポートしてみましょう。

=IMPORTHTML("URL","table",5)


今度はHTMLドキュメントのテーブルタグで構成された表のままインポート、テーブル枠で分けてセルに入力されました。

HTMLドキュメントの表やリストを、スプレッドシートにインポートする場合は、IMPORTHTML関数を使うのが良さそうです。

テーブル枠で分けてセルに入力されました

まとめ:IMPORTXML関数とIMPORTHTML関数でHTMLのデータをインポート

GoogleスプレッドシートにURLを指定してHTMLドキュメントのデータをインポートする方法を紹介しました。

■HTMLドキュメントのテーブルタグ<table>、リストタグ<li>を、テーブルやリストのままインポートしたい場合

IMPORTXML(“URL” , XPath)


■HTMLドキュメントのテーブルタグ<table>、リストタグ<li>を、テーブルやリストのままインポートしたい場合

IMPORTHTML(“URL” , “table” , タグの番号)


価格や文言などが頻繁に変動するWebページのデータを参照する場合に便利なので、是非試してみてください。








𝕏 ( 旧Twitter ) Facebook Pocket LINE はてブ

おすすめの関連記事



あわせてよく読まれている記事