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を調べる
- 取り込みたいデータを含むWebページを開く
Google Chromeなどのブラウザで、価格表示やリストなど対象の要素があるページを開きます。 - デベロッパーツールで要素を確認する
取得したい部分で右クリックし「検証」を選択します。デベロッパーツールが開き、該当HTMLがハイライトされます。そこからタグ名、クラス、IDなどの情報を確認します。 - XPathをコピーする
デベロッパーツールの該当要素を右クリックし「Copy」→「Copy XPath」を選びます。または、自分でXPathを記述しても構いません。コピーしたXPathは後で使います。
スプレッドシートでIMPORTXML関数を入力する
- セルにIMPORTXML関数を入力する
取り込み先のセルに次のように入力します。=IMPORTXML("URL", "XPath")
URLは引用符で囲んだ完全なURL、XPathは引用符で囲んだXPath式です。 - 具体例で試す
例えば、天気予報サイトから気温を取得する場合:=IMPORTXML("https://example-weather.com/tokyo", "//span[@class='temp']")
すると、そのクラスを持つspan要素のテキストが表示されます。 - 結果が表示されるのを待つ
関数が実行されると、数秒~数十秒で結果が表示されます。大量データの場合は時間がかかる場合があります。
XPathの応用テクニック
- 複数の要素を取得する
XPathに//を使用すると、該当するすべての要素を縦に並べて取得します。例えば、//pはすべての段落を取得します。 - 属性値を取得する
テキストではなく、リンクURLや画像のsrc属性を取得したい場合は、XPathの末尾に/@hrefや/@srcを追加します。例://a/@hrefでリンク一覧を取得します。 - 位置を指定して取得する
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
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
