Home / Google / 【2026年最新版】GoogleスプレッドシートのIMPORTXMLが動かない・エラーになる原因と対処法【完全ガイド】

【2026年最新版】GoogleスプレッドシートのIMPORTXMLが動かない・エラーになる原因と対処法【完全ガイド】

※本ページにはプロモーション(広告)が含まれています

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系関数がエラーになる主な原因

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要素
IMPORTXML修復手順

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)

IMPORTXML修復手順

対処法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の基礎から応用まで。データ活用スキルを身につける一冊

🛒 Amazonで探す

外付けモニター 27インチ 4K IPS

約30,000〜45,000円

スプレッドシートの大量データを広い画面で効率的に管理。目に優しいIPSパネル

🛒 Amazonで探す

ワイヤレスキーボード&マウスセット

約4,000〜6,000円

デスクワークの効率アップに。静音設計でオフィスでも快適

🛒 Amazonで探す

※ 価格は変動します。最新価格はリンク先でご確認ください

よくある質問(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が最も強力な代替手段です。プログラミングの知識が必要ですが、アクセス制限の回避、上限の解消、定期実行の設定など、柔軟なデータ取得が可能になります。用途に応じて最適な方法を選んでください。

Check Also

【2026年最新版】Google Nest MiniのVoice Matchが声を認識しない・「誰かわかりません」と言われる原因と対処法【完全ガイド】

Google Nest Min …