ADVERTISEMENT

【Googleスプレッドシート】RSSフィードをSheetsに取り込む!XMLサービスでの解析

【Googleスプレッドシート】RSSフィードをSheetsに取り込む!XMLサービスでの解析
🛡️ 超解決

RSSフィードを使えばニュースサイトやブログの更新情報を効率的に追跡できますが、毎回ブラウザで確認するのは手間がかかります。GoogleスプレッドシートのImportXML関数を利用すれば、RSSフィードの内容を自動的にシートに取り込むことが可能です。この記事ではImportXML関数の基本構文から具体的な設定手順、注意点までを詳しく解説します。これを読めば、RSSフィードをシートで管理する方法を理解できます。

【要点】RSSフィードをスプレッドシートに取り込むためのImportXMLの使い方

  • =ImportXML(URL, XPath) の基本構文: 第1引数にRSSフィードのURL、第2引数に取り出したい要素のXPathを指定します。
  • RSSフィード用のXPathパターン: 記事のタイトルは //item/title、リンクは //item/link、公開日は //item/pubDate などで取得できます。
  • 読み込みエラー時の対処法: CORS制限やXML構造の変化で#N/Aエラーが出る場合は、フィードのURLを確認し、XPathを調整することで解決します。

ADVERTISEMENT

RSSフィードを取り込む仕組みとImportXML関数の基礎

RSSフィードはXML形式で配信されており、各記事は<item>タグに格納されています。GoogleスプレッドシートのImportXML関数は、指定したURLからXMLデータを取得し、XPathに基づいて特定のテキストを抽出します。たとえば、フィードのURLが “https://example.com/feed.xml” の場合、すべての記事タイトルを取得するには =ImportXML(“https://example.com/feed.xml”, “//item/title”) と記述します。この関数は動的に更新されるため、シートを開くたびに最新のフィード内容を反映します。

ImportXML関数の最大の利点は、RSSフィードの構造を理解していれば、タイトル、リンク、公開日、説明文など必要な情報だけを抽出できる点です。ただし、フィードのXML構造が変更されるとエラーになるため、XPathを適宜修正する必要があります。また、Googleスプレッドシートの制限により、1つのシートで使用できるImportXMLの呼び出し回数には上限があります(約50回程度)。大量のフィードを処理する場合は、QUERY関数と組み合わせて効率化することも可能です。

ImportXMLでRSSフィードを読み込む具体的な手順

シートの準備とフィードURLの確認

  1. 新しいシートを開く
    Googleスプレッドシートを新規作成するか、既存のシートに新しいタブを追加します。シート名は「RSSフィード」などわかりやすい名前にしておくと便利です。
  2. RSSフィードのURLを確認する
    取り込みたいサイトのRSSフィードURLを取得します。多くのサイトではページ下部に「RSS」や「フィード」のリンクがあり、そこからコピーできます。たとえば、Googleニュースのトップニュースフィードは “https://news.google.com/rss?hl=ja&gl=JP&ceid=JP:ja” です。
  3. ImportXML関数の基本形を入力する
    セルA1に次のように入力します:
    =ImportXML(“https://news.google.com/rss?hl=ja&gl=JP&ceid=JP:ja”, “//item/title”)
    最初はサンプルフィードで動作確認をすると安心です。

XPathの指定と取得データの調整

  1. 記事タイトルを取得する
    XPathに “//item/title” と指定すると、すべての記事のタイトルが縦一列に表示されます。タイトルは通常1行のテキストなので、そのまま利用できます。
  2. 記事のリンクを取得する
    セルB1に =ImportXML(同じURL, “//item/link”) と入力します。リンクは各記事のURL文字列として取得されます。
  3. 公開日時を取得する
    セルC1に =ImportXML(同じURL, “//item/pubDate”) と入力します。pubDateはRSS標準の日付形式(例:Mon, 01 Jan 2024 12:00:00 GMT)で表示されます。必要に応じてDATEVALUE関数やTEXT関数で整形できます。
  4. 記事の説明文を取得する
    セルD1に =ImportXML(同じURL, “//item/description”) と入力します。ただし、descriptionにはHTMLタグが含まれる場合があるため、そのままでは見づらくなることがあります。その場合は、REGEXREPLACE関数などでタグを除去すると良いでしょう。

上記の手順で基本の4項目(タイトル、リンク、公開日、説明)を取得できます。各列に関数を1つずつ入力する方法が最もシンプルですが、フィードが大量の記事を含む場合、シートの再計算が遅くなる可能性があります。その場合は、1つのセルで複数のXPathを配列として指定するか、QUERY関数と組み合わせて表示を制御すると効果的です。

ImportXML使用時の注意点とよくあるエラー

#N/Aエラーが出る場合の原因と対処

ImportXML関数が#N/Aを返す主な原因は、指定したXPathが要素を見つけられないことです。RSSフィードのURLが正しいか、フィードがXML形式であることを確認してください。また、一部のサイトではCORS(クロスオリジンリソース共有)制限により、Googleスプレッドシートからのアクセスを拒否する場合があります。その場合は、別のフィードを探すか、IMPORTFEED関数(RSS専用)を試してみると良いでしょう。IMPORTFEED関数は =IMPORTFEED(“URL”) で簡単にタイトルとリンクを取得できますが、取得できる項目が限られるため、詳細なデータが必要な場合はImportXMLのほうが柔軟です。

読み込みが遅い、または制限に達する場合

ImportXML関数はシートを開くたびに再計算されるため、大量のフィードや長大な記事リストを扱うと処理が遅くなることがあります。Googleスプレッドシートには1シートあたりのインポート関数の呼び出し回数制限(約50回)があります。これを超えるとエラーが発生します。対策として、必要なフィードだけを厳選する、QUERY関数で取得後に必要な行だけを表示する、またはApps Scriptを使ってバックグラウンドでデータを取得する方法があります。Apps Scriptなら制限を回避しやすいです。

XML構造が変わった場合の対応

RSSフィードの配信元がXML構造を変更すると、これまで正しく動作していたXPathが無効になり、#N/Aが返るようになります。その場合は、フィードのソースを直接ブラウザで開き、目的のデータがどのタグに含まれているか再確認します。たとえば、タイトルが <title> タグから <media:title> タグに変わった場合、XPathを “//media:title” に修正します。名前空間(xmlns)が使われている場合は、XPathの記述に注意が必要です。GoogleスプレッドシートのImportXMLは名前空間を自動的に無視するため、通常は “//*[local-name()=’title’]” のような汎用的なXPathで対応できます。

ADVERTISEMENT

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

関数 用途 取得できるデータ 制限
ImportXML XML/HTMLデータの任意の要素をXPathで抽出 タイトル、リンク、日付、説明など自由に指定可能 呼び出し回数制限(約50回)、CORS制限の影響を受ける
IMPORTFEED RSS/Atomフィード専用の簡易関数 タイトル、リンク、日付、説明(フィードの標準要素のみ) カスタムXPathが使えず、フィード構造に依存
IMPORTHTML HTMLテーブルまたはリストの取得 テーブルデータ or リストアイテム RSSフィードには対応せず、HTMLページのみ

ImportXMLは汎用性が高く、XPathを覚えればどんなXMLデータでも扱えます。IMPORTFEEDはRSSフィードに特化しており、簡単ですが取得項目が限られます。IMPORTHTMLはHTMLページのテーブルやリストを取得するのに適しており、RSSフィードには使いません。目的に応じて関数を選びましょう。たとえば、ブログの更新情報をタイトルとリンクだけ取得したい場合はIMPORTFEEDで十分ですが、著者やカテゴリーなどの追加情報が必要な場合はImportXMLが役立ちます。

まとめ

この記事では、ImportXML関数を使ってRSSフィードをGoogleスプレッドシートに取り込む方法を解説しました。ImportXMLの基本構文とRSSフィード用のXPathを覚えれば、ニュースやブログの更新をシート上で自動管理できます。特に、タイトル・リンク・公開日・説明文を個別に取得する手順は、多くのフィードで応用可能です。次に、取得したデータをQUERY関数でフィルタリングしたり、Apps Scriptで定期的に自動更新する仕組みを試してみると、さらに便利に活用できるでしょう。ぜひ、お気に入りのRSSフィードでImportXMLを実践してみてください。


ADVERTISEMENT

この記事の監修者
✍️

超解決 第一編集部

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