Quillfold

IMPORTHTML が動かない・違う表を取るときの原因と対処

IMPORTHTML を使うと、Web ページの表を数式 1 つで Google スプレッドシートに取り込み、そのまま最新に保てます。うまくいけば、これほど手軽な方法はありません。うまくいかないときは、セルにエラーが出る、違う表が入る、何も入らない、のどれかになります。

以下の Google の説明は、すべて Google ドキュメント エディタ ヘルプのページから、2026年10月7日に確認したものです。

書き方

=IMPORTHTML("https://example.com/prices", "table", 2)
  • URL:ページのアドレス。https:// から書きます。
  • query:「list」か「table」。取り出したいデータが箇条書きか表かで選びます。
  • index:ヘルプには「HTML ソース内で定義されている番号で 1 から順に指定します」とあります。

ヘルプに載っている引数はこの 3 つだけです。

違う表を取る理由

番号(index)を間違えやすい理由が 3 つあり、どれもヘルプの説明から分かります。

  1. 1 から数えます。 0 からではありません。
  2. 画面ではなく HTML ソースの順で数えます。 画面でいちばん上に見える表が、ソースでは 3 番目の <table> ということがあります。レイアウト用の表、隠れた表、メニューの中の表も数に入ります。
  3. 表と箇条書きは別々に数えます。 ヘルプ(英語版)には「The indices for lists and tables are maintained separately」とあり、番号 1 の表と番号 1 の箇条書きが両方ありうると説明されています。

正しい番号の見つけ方:

  1. ページを開いてソースを表示します。Windows の Chrome なら Ctrl+U、Mac なら Option+Command+U です。
  2. Ctrl+F(Mac は Command+F)で <table を検索します。見つかった 1 つ 1 つが表で、その順番が IMPORTHTML の数え方です。
  3. 表に見えている値を含むものを探し、それが何番目かを数えます。それが index です。

数えるのが面倒なら、隣り合うセルに index を 1、2、3… と変えた数式を並べ、合っているものを残す方法もあります。

取り込む表が見つからないとき

ヘルプは index を「HTML ソース内で定義されている番号」と説明しています。JavaScript で後から作られる表や、ログインが必要なページを読めるかどうかについては、ヘルプに記載がありません。自分のページは次の手順で確かめられます。

  1. ソースを表示します(上と同じ)。
  2. 表に見えている値を検索します。
  3. ソースになければ、表はページの読み込み後に作られています。ヘルプの説明どおりなら、IMPORTHTML が数える表には入っていません。

<table> ではなく <div> を並べて作った表も同じです。query は「table」か「list」しか選べません。

Google が説明しているエラー

ヘルプの「Learn more about Import functions」には、次のメッセージが載っています。英語版の原文で引用します。

  • 「Loading data may take a while because of the large number of requests. Try to reduce the amount of IMPORTHTML, IMPORTDATA, IMPORTFEED, or IMPORTXML functions across spreadsheets you’ve created.」 インポート関数が多すぎます。まとめるか、減らしてください。
  • 「This function is not allowed to reference a cell with NOW(), RAND(), RANDARRAY(), or RANDBETWEEN().」 URL の引数が、これらの関数を使ったセルを参照しています(更新を強制するために使われることがあります)。参照を外してください。
  • 「Admin has not allowed imports from…」 Google Workspace の管理者がインポートを禁止しています。
  • インポート関数では Excel ファイルは読み込めません。

ここにないメッセージが出た場合、Google のヘルプには説明がなく、このガイドでも扱いません。

更新のタイミング

ヘルプ(英語版)には「All three functions automatically check for updates every hour while the document is open, even if the formula and sheet don’t change.」とあります。ドキュメントが開いている間は、数式やシートが変わらなくても 1 時間ごとに更新を確認する、という意味です。さらに、セルを削除して追加し直すか、同じ数式で上書きすると更新される、とも書かれています。計算設定のページでも、ImportHtml の再計算の間隔は 1 時間です。

つまりデータは最大で 1 時間前のものになりえます。すぐに最新にしたいときは、数式を入れ直してください。

ページ送り

IMPORTHTML は 1 つのアドレスを読みます。「次へ」や「もっと見る」をたどることについて、ヘルプには記載がありません。ページごとにアドレスがある(?page=2 など)なら、ページごとに数式を 1 つずつ書いて縦に並べます。アドレスが変わらないなら、2 ページ目には届きません。次のページに進まない・1 ページ目しか取れないもご覧ください。

ほかの方法(2026年10月時点)

状況使うもの
サイトが決まったアドレスで CSV を公開している=IMPORTDATA(URL)。CSV か TSV 形式のデータを読み込む関数です。
表がソースにあり、最新に保ちたいIMPORTHTML。シートの中で自動的に更新されるのはこれだけです。
表が JavaScript で作られる、ログインが必要、アドレスの変わらないページ送り開いているページを読む拡張機能で取り込み、アップロードか貼り付けをする。
Windows 版 Excel を使っている「データ」→「Web から」。Excel の「Web から」で表が取れないときをご覧ください。

私たちの拡張機能 TableHarvest は、開いているタブを読むので、JavaScript で作られた表やログインしているページも読めます。XLSX や CSV などで書き出したファイルを、Google スプレッドシートで開けます。ただし Google スプレッドシートへ直接書き込むことはできず、自動更新もありません。取り込むたびにその時点の写しです。IMPORTHTML で読める表を最新に保ちたいなら、IMPORTHTML を使い続けてください。

根拠

2026年10月7日に確認。

ガイドの一覧