※本ページにはプロモーション(広告)が含まれています
GoogleスプレッドシートのIMPORTXML関数が突然動かなくなった、#N/Aエラーや「リソースを読み込めません」と表示される——このトラブルに悩んでいませんか?IMPORTXML、IMPORTHTML、IMPORTDATAなどの外部データ取得関数は非常に便利ですが、さまざまな理由でエラーになることが多い関数でもあります。
この記事では、GoogleスプレッドシートのIMPORTXML系関数がエラーになる原因を徹底解説し、確実に解決するための対処法をステップ形式でご紹介します。2026年最新の仕様変更にも対応した完全ガイドです。
📌 この記事でわかること
- IMPORTXML/IMPORTHTML/IMPORTDATAがエラーになる主な原因7つ
- 対象サイトのアクセス制限(robots.txt、CORS、認証)の確認方法
- XPath構文の間違いを見つけて修正する方法
- スプレッドシートの外部データ関数50個上限と回避策
- 「リソースを読み込めません」エラーの具体的な解決手順
- IMPORTXML の代替手段(Google Apps Script)の活用法
- データの自動更新が止まった場合のリフレッシュ方法

IMPORTXML系関数がエラーになる主な原因
IMPORTXML、IMPORTHTML、IMPORTDATAの各関数がエラーになる原因はさまざまです。以下の表でエラーの種類と原因を確認し、適切な対処法を見つけてください。
| エラー表示 | 原因 | 対処法 |
|---|---|---|
| #N/A(リソースを読み込めません) | 対象サイトがアクセスを拒否している | 対処法1・6を参照 |
| #N/A(インポートされたコンテンツが空) | XPathが正しくない、ページ構造が変化 | 対処法2を参照 |
| #ERROR!(内部エラー) | Google側の一時的な問題 | 対処法3を参照 |
| 読み込み中のまま終わらない | 外部データ関数の上限(50個)に到達 | 対処法4を参照 |
| #REF!(参照エラー) | 関数の構文エラー | 対処法5を参照 |
| データが古いまま更新されない | 自動更新のキャッシュ問題 | 対処法7を参照 |
対処法1: 対象サイトのアクセス制限を確認する
IMPORTXML関数で最も多いエラー原因が、対象サイトがGoogleのサーバーからのアクセスを拒否しているケースです。IMPORTXMLはGoogleのサーバーから対象URLにアクセスしてデータを取得するため、サイト側でボット(自動アクセス)をブロックしている場合はデータを取得できません。
ブロックされるケース
| ブロック原因 | 詳細 | 確認方法 |
|---|---|---|
| robots.txtによるブロック | サイトのrobots.txtでクローラーを拒否 | サイトURL/robots.txt を確認 |
| Cloudflareなどのセキュリティ | WAFやDDoS対策でボットをブロック | ブラウザでアクセスして確認 |
| ログイン認証が必要 | 認証なしではアクセスできないページ | シークレットモードでアクセス |
| JavaScriptで動的にレンダリング | HTMLソースにデータが存在しない | ページソースを表示して確認 |
確認手順
ステップ1: ブラウザで対象URLにアクセスし、ページが正常に表示されることを確認します。
ステップ2: ブラウザの「ページのソースを表示」(Ctrl+U)で、取得したいデータがHTMLソースコードに含まれているか確認します。JavaScriptで動的に生成されるコンテンツはIMPORTXMLでは取得できません。
ステップ3: 対象サイトの /robots.txt(例:https://example.com/robots.txt)を確認し、Google のクローラーがブロックされていないか確認します。
⚠️ 注意: サイトがアクセスをブロックしている場合、IMPORTXMLでは対処法がありません。この場合は「対処法6: Google Apps Scriptで代替する」を検討してください。ただし、サイトの利用規約に違反しないよう注意しましょう。
対処法2: XPath構文を確認・修正する
IMPORTXML関数の第2引数であるXPathクエリが正しくないと、データを取得できません。対象サイトのHTML構造が変更された場合にも、以前は動作していたXPathが使えなくなることがあります。
XPathの基本構文
| XPath式 | 取得対象 | 例 |
|---|---|---|
//title |
ページタイトル | すべてのtitle要素 |
//h1 |
H1見出し | すべてのh1要素 |
//meta[@name='description']/@content |
メタディスクリプション | meta descriptionの内容 |
//div[@class='price'] |
特定classのdiv要素 | class=”price”のdiv |
//table//tr/td |
テーブル内のセル | 全テーブルのtd要素 |

XPathの検証手順
ステップ1: ブラウザでデータを取得したいページを開きます。
ステップ2: 取得したい要素を右クリックし、「検証」(Chrome DevTools)を開きます。
ステップ3: DevToolsの「Elements」タブで該当要素がハイライトされます。要素を右クリックして「Copy」→「Copy XPath」を選択すると、正確なXPathをコピーできます。
ステップ4: コピーしたXPathをIMPORTXML関数に貼り付けて動作を確認します。
💡 ヒント: DevToolsの「Console」タブで $x("//XPath式") と入力すると、そのXPathで取得される要素をプレビューできます。IMPORTXML関数に設定する前に、ここで動作確認するのがおすすめです。
よくあるXPathの間違い
間違い1: シングルクォートとダブルクォートの混在。IMPORTXML関数内ではXPathのクォートに注意が必要です。関数全体がダブルクォートで囲まれている場合、XPath内ではシングルクォートを使います。
正しい例: =IMPORTXML("https://example.com","//div[@class='content']")
間違い2: 名前空間(namespace)付きのXML。RSSフィードなど名前空間を持つXMLデータの場合、通常のXPathでは要素を指定できないことがあります。//*[local-name()='item'] のようにローカル名で指定してみてください。
対処法3: 一時的なエラーの解消(リフレッシュ方法)
IMPORTXML関数はGoogle側のサーバーを経由してデータを取得するため、一時的なサーバーエラーで #ERROR! が表示されることがあります。以下の方法でリフレッシュできます。
方法1: セルの再計算を強制する
ステップ1: エラーが出ているセルを選択します。
ステップ2: 数式バーの末尾にスペースを追加してからEnterを押し、再度スペースを削除してEnterを押します。これで関数が再実行されます。
方法2: ダミーパラメータを使う
URLにダミーのクエリパラメータを追加することで、キャッシュをバイパスして最新データを取得できます。
=IMPORTXML("https://example.com/page?dummy="&NOW(),"//h1")
NOW() 関数を組み合わせることで、毎回異なるURLとして認識され、キャッシュされたデータではなく最新のデータが取得されます。
方法3: スプレッドシートの再読み込み
ブラウザでスプレッドシートのページをF5キー(またはCtrl+R)で再読み込みすると、すべてのIMPORT系関数が再実行されます。
対処法4: 外部データ関数の50個上限を回避する
Googleスプレッドシートには、1つのスプレッドシート内で使用できるIMPORT系関数の数に上限があるという重要な制約があります。この上限に達すると、一部の関数が「読み込み中」のまま完了しなくなります。
上限の詳細
| 関数 | 上限に含まれるか | 備考 |
|---|---|---|
| IMPORTXML | はい | 最もよく使われる |
| IMPORTHTML | はい | テーブル・リスト取得用 |
| IMPORTDATA | はい | CSV・TSV取得用 |
| IMPORTFEED | はい | RSS・Atomフィード取得用 |
| IMPORTRANGE | いいえ(別カウント) | スプレッドシート間参照 |
回避策
方法1: スプレッドシートを分割する。 IMPORT系関数が多い場合は、複数のスプレッドシートに分散させ、IMPORTRANGEで結果を集約します。IMPORTRANGEは上限に含まれないため、この方法で実質的に上限を超えることができます。
方法2: 不要なIMPORT関数を削除する。 使っていない古いIMPORT関数がシート内に残っていないか確認しましょう。値が確定したデータは、関数の結果をコピーして「値のみ貼り付け」(Ctrl+Shift+V)に置き換えることで、上限の枠を解放できます。
方法3: Google Apps Scriptで置き換える。 IMPORT系関数の代わりにApps Scriptを使うと、50個の上限を気にする必要がなくなります(対処法6で詳述)。
対処法5: 関数の構文を正しく記述する
基本的なことですが、関数の構文ミスも多い原因の一つです。各IMPORT系関数の正しい構文を確認しましょう。
各関数の正しい構文
IMPORTXML:
=IMPORTXML(URL, XPathクエリ)
例: =IMPORTXML("https://example.com/page","//h1")
IMPORTHTML:
=IMPORTHTML(URL, クエリタイプ, インデックス)
例: =IMPORTHTML("https://example.com/page","table",1)
※ クエリタイプは “table” または “list”、インデックスは1から始まる番号
IMPORTDATA:
=IMPORTDATA(URL)
例: =IMPORTDATA("https://example.com/data.csv")
IMPORTFEED:
=IMPORTFEED(URL, [クエリ], [ヘッダー], [アイテム数])
例: =IMPORTFEED("https://example.com/feed","items title",FALSE,10)

対処法6: Google Apps Scriptで代替する
IMPORTXMLの制約(アクセス拒否、50個上限、XPathの限界)を超えたい場合は、Google Apps Script(GAS)を使った代替方法が最も効果的です。
基本的なスクリプト例
ステップ1: スプレッドシートのメニューから「拡張機能」→「Apps Script」を選択します。
ステップ2: エディタに以下のような関数を記述します。
GASの UrlFetchApp.fetch() を使うことで、IMPORTXMLでは取得できなかったサイトのデータも取得できる場合があります。ただし、User-Agentの設定やリクエスト頻度には十分注意してください。
ステップ3: スクリプトを保存し、スプレッドシート内でカスタム関数として呼び出します。
GASのメリットとデメリット
| 項目 | IMPORTXML | Google Apps Script |
|---|---|---|
| 使いやすさ | 関数1つで完結 | プログラミング知識が必要 |
| 関数数の上限 | 50個まで | 実質無制限 |
| アクセス制限への対応 | ブロックされたら不可 | ヘッダー設定など柔軟に対応可能 |
| 自動更新 | 自動(頻度は不定) | トリガーで定期実行を設定可能 |
| 実行時間制限 | なし | 6分(無料アカウント) |
対処法7: データの自動更新を確実にする
IMPORTXML関数は定期的にデータを自動更新しますが、更新頻度はGoogleが制御しており、ユーザーが直接設定することはできません。データが古いままの場合、以下の方法で強制更新できます。
強制更新の方法
方法1: スプレッドシートの設定を変更する。 「ファイル」→「設定」→「計算」タブで、再計算の設定を「変更時と毎分」に設定します。これにより、より頻繁にIMPORT関数が再実行されます。
方法2: 数式を編集して強制再計算。 セルの数式を一度削除してからもう一度入力する(またはCtrl+Zで元に戻す)と、再計算が実行されます。
方法3: Apps Scriptのトリガーを使う。 IMPORT関数の代わりにGASを使っている場合は、「時間ベースのトリガー」を設定することで、1時間ごとや1日ごとの定期的な更新を確実に実行できます。
対処法の一覧まとめ表
| 対処法 | 効果 | 難易度 |
|---|---|---|
| 対象サイトのアクセス制限確認 | ★★★★★ | ★☆☆(簡単) |
| XPath構文の確認・修正 | ★★★★★ | ★★☆(普通) |
| 一時的エラーのリフレッシュ | ★★★☆☆ | ★☆☆(簡単) |
| 50個上限の回避 | ★★★★☆ | ★★☆(普通) |
| 関数の構文修正 | ★★★★★ | ★☆☆(簡単) |
| Apps Scriptで代替 | ★★★★★ | ★★★(やや難) |
| 自動更新の強制実行 | ★★★☆☆ | ★☆☆(簡単) |
この記事に関連するおすすめ商品
Google Workspace活用ガイド入門書
約2,000〜3,000円
スプレッドシート・GASの基礎から応用まで。データ活用スキルを身につける一冊
外付けモニター 27インチ 4K IPS
約30,000〜45,000円
スプレッドシートの大量データを広い画面で効率的に管理。目に優しいIPSパネル
ワイヤレスキーボード&マウスセット
約4,000〜6,000円
デスクワークの効率アップに。静音設計でオフィスでも快適
※ 価格は変動します。最新価格はリンク先でご確認ください
よくある質問(FAQ)
Q1. IMPORTXMLとIMPORTHTMLの違いは何ですか?
IMPORTXMLはXPathクエリを使ってHTMLやXMLから任意の要素を取得できる汎用的な関数です。IMPORTHTMLはページ内のテーブル(table要素)やリスト(ul/ol要素)に特化しており、インデックス番号で何番目のテーブル・リストかを指定します。テーブルデータを取得したい場合はIMPORTHTMLの方がシンプルに書けます。
Q2. IMPORTXMLで日本語サイトのデータを取得できますか?
はい、日本語サイトのデータも取得可能です。ただし、文字エンコーディングによっては文字化けが発生することがあります。UTF-8でエンコードされたサイトであれば問題ありません。Shift_JISなどの場合は、GASを使った方が文字コードの変換を柔軟に行えます。
Q3. IMPORTXMLでGoogleの検索結果は取得できますか?
いいえ、Googleの検索結果ページからIMPORTXMLでデータを取得することはできません。Google はボットからのアクセスをブロックしています。検索結果のデータが必要な場合は、Google Search ConsoleやSerpAPI等の専用サービスの利用を検討してください。
Q4. IMPORT関数の結果をそのまま別の関数で加工できますか?
はい、IMPORT関数の結果は通常のセルデータとして扱えるため、VLOOKUP、FILTER、QUERYなどの関数と組み合わせることができます。ただし、IMPORT関数がエラーの場合は連鎖的にエラーになるため、IFERROR関数でエラー処理を入れておくことをおすすめします。例: =IFERROR(IMPORTXML(...),"取得エラー")
Q5. 1つのIMPORTXMLで複数のデータを取得できますか?
はい、XPathで複数の要素を返す指定をすると、結果が複数行に展開されます。例えば //h2 と指定すると、ページ内のすべてのh2見出しが各行に展開されます。特定の順番の要素だけが必要な場合は (//h2)[1] のようにインデックスを指定してください。
Q6. IMPORTXMLの実行にかかる時間を短縮する方法はありますか?
IMPORTXML自体の実行速度はGoogle側で制御されているため、直接的に高速化する方法はありません。ただし、XPathを具体的に指定する(広い範囲ではなくピンポイントで要素を指定する)ことで、処理するデータ量が減り、結果的に速くなることがあります。また、GASに置き換えてキャッシュ機能を実装するのも有効です。
Q7. 無料のGoogleアカウントとWorkspaceアカウントでIMPORT関数に違いはありますか?
基本的な機能は同じですが、Google WorkspaceアカウントではIMPORT関数の使用がセキュリティポリシーで制限されている場合があります。管理者がIMPORT系関数の使用を無効にしている場合は、管理者に確認してください。また、Workspaceアカウントの方がGASの実行時間制限が緩い(30分)ため、大量データの取得にはWorkspaceアカウントが有利です。
まとめ
GoogleスプレッドシートのIMPORTXML/IMPORTHTML/IMPORTDATA関数がエラーになる原因は、対象サイトのアクセス制限とXPath構文の間違いが最も多いです。まずはこの2点を確認してください。
1つのスプレッドシート内でIMPORT系関数を50個以上使っている場合は、上限に達している可能性があります。スプレッドシートの分割や、不要な関数の削除・値貼り付けへの変換を検討しましょう。
IMPORTXMLの制約を超えたい場合は、Google Apps Scriptが最も強力な代替手段です。プログラミングの知識が必要ですが、アクセス制限の回避、上限の解消、定期実行の設定など、柔軟なデータ取得が可能になります。用途に応じて最適な方法を選んでください。
minto.tech スマホ(Android/iPhone)・PC(Mac/Windows)の便利情報をお届け! 月間アクセス160万PV!スマートフォン、タブレット、パソコン、地デジに関する素朴な疑問や、困ったこと、ノウハウ、コツなどが満載のお助け記事サイトはこちら!