ADVERTISEMENT

【Googleスプレッドシート】XMLデータの取込!IMPORTXMLでXPath指定の使い方

【Googleスプレッドシート】XMLデータの取込!IMPORTXMLでXPath指定の使い方
🛡️ 超解決

Webサイトから商品価格やニュース見出しなど、特定のデータをスプレッドシートに自動で取り込みたいと考えたことはありませんか。手作業でコピー&ペーストを繰り返すのは非効率です。Googleスプレッドシートには、XMLやHTMLから目的の情報を抽出できるIMPORTXML関数が用意されています。この記事では、IMPORTXML関数を使ったデータ取り込み方法と、XPath指定の基本をわかりやすく解説します。これを読めば、Web上のデータをスプレッドシートに自動反映できるようになります。

【要点】IMPORTXML関数でWebデータを取り込む方法

  • =IMPORTXML(URL, XPath): 指定したURLのXMLまたはHTMLから、XPathで指定した要素のテキストや属性を取得します。
  • XPathの基本: //で全階層検索、@で属性指定、[数値]で位置指定ができ、柔軟に要素を抽出できます。
  • 実際の使用例: 商品価格、ニュースタイトル、天気情報などを自動更新で取得し、リアルタイムなデータ管理が可能です。

ADVERTISEMENT

IMPORTXML関数の概要と仕組み

IMPORTXML関数は、指定したURLからXMLまたはHTML形式のデータを取得し、XPath(XML Path Language)を使って特定の要素を抽出する関数です。XPathはXML文書の特定部分を指し示すための言語で、HTMLにも応用できます。IMPORTXMLはこのXPath式に従い、マッチした要素のテキスト内容や属性値をセルに返します。例えば、ニュースサイトの見出し一覧を取得する場合、//h2のようなXPathでh2タグのテキストを抽出できます。この関数は、Webスクレイピングをコードなしで実現できる便利な機能です。

IMPORTXMLでXPathを指定する手順

準備:取得したいWebページのURLとXPathを調べる

  1. 取り込みたいデータを含むWebページを開く
    Google Chromeなどのブラウザで、価格表示やリストなど対象の要素があるページを開きます。
  2. デベロッパーツールで要素を確認する
    取得したい部分で右クリックし「検証」を選択します。デベロッパーツールが開き、該当HTMLがハイライトされます。そこからタグ名、クラス、IDなどの情報を確認します。
  3. XPathをコピーする
    デベロッパーツールの該当要素を右クリックし「Copy」→「Copy XPath」を選びます。または、自分でXPathを記述しても構いません。コピーしたXPathは後で使います。

スプレッドシートでIMPORTXML関数を入力する

  1. セルにIMPORTXML関数を入力する
    取り込み先のセルに次のように入力します。
    =IMPORTXML("URL", "XPath")
    URLは引用符で囲んだ完全なURL、XPathは引用符で囲んだXPath式です。
  2. 具体例で試す
    例えば、天気予報サイトから気温を取得する場合:
    =IMPORTXML("https://example-weather.com/tokyo", "//span[@class='temp']")
    すると、そのクラスを持つspan要素のテキストが表示されます。
  3. 結果が表示されるのを待つ
    関数が実行されると、数秒~数十秒で結果が表示されます。大量データの場合は時間がかかる場合があります。

XPathの応用テクニック

  1. 複数の要素を取得する
    XPathに//を使用すると、該当するすべての要素を縦に並べて取得します。例えば、//pはすべての段落を取得します。
  2. 属性値を取得する
    テキストではなく、リンクURLや画像のsrc属性を取得したい場合は、XPathの末尾に/@hrefや/@srcを追加します。例://a/@hrefでリンク一覧を取得します。
  3. 位置を指定して取得する
    XPathで要素の順番を指定できます。例えば、(//div[@class=’item’])[1]は最初のアイテムのみを取得します。

IMPORTXMLを使う際の注意点とトラブルシューティング

#N/A エラーが表示される場合

エラーの原因はいくつか考えられます。まず、XPathが間違っている可能性があります。デベロッパーツールでコピーしたXPathが完全一致していない場合、正しいXPathを手動で修正してください。また、Webサイトが動的コンテンツ(JavaScriptで読み込まれる)の場合、IMPORTXMLでは取得できないことがあります。その場合は、代わりにIMPORTHTML関数やGoogle Apps Scriptを検討しましょう。

データが更新されない場合

IMPORTXMLは原則として1時間に1回程度更新されます。強制的に再計算したい場合は、ツールメニューの「計算」→「シートの再計算」を実行するか、関数の引数を少し変更して再度入力してください。また、URLが変更されていないか確認しましょう。

インポートに時間がかかる場合

取得するデータ量が多いと、スプレッドシートの処理が遅くなる場合があります。必要な要素だけをXPathで絞り込む、またはQUERY関数を使って後からフィルタリングするなどの対策を行います。

ADVERTISEMENT

IMPORTXMLと他のインポート関数の比較

関数名 データ形式 指定方法 用途
IMPORTXML XML、HTML XPath 特定の要素や属性を抽出する
IMPORTHTML HTMLのテーブル・リスト テーブル番号・リスト番号 テーブルやリストをそのままインポートする
IMPORTDATA CSV、TSV URLのみ 区切り文字データをそのままインポートする
IMPORTFEED RSS、Atom URLのみ フィードから最新記事を取得する

まとめ

IMPORTXML関数を使うと、Web上のXMLやHTMLからXPathで指定したデータをスプレッドシートに自動で取り込めます。XPathの基本を覚えれば、商品価格やニュース、天気など様々な情報を手間なく取得できます。最初は簡単なXPathから試し、徐々に複雑な抽出に挑戦してみてください。また、動的コンテンツにはIMPORTHTMLやApps Scriptも併用すると、より幅広いデータ収集が可能です。IMPORTXMLを活用して、スプレッドシートでのデータ管理をさらに効率化しましょう。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。