IMPORTHTML が動かない・違う表を取るときの原因と対処
このガイドは TableHarvest を作っている Quillfold が公開しています。
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 から数えます。 0 からではありません。
- 画面ではなく HTML ソースの順で数えます。 画面でいちばん上に見える表が、ソースでは 3 番目の
<table>ということがあります。レイアウト用の表、隠れた表、メニューの中の表も数に入ります。 - 表と箇条書きは別々に数えます。 ヘルプ(英語版)には「The indices for lists and tables are maintained separately」とあり、番号 1 の表と番号 1 の箇条書きが両方ありうると説明されています。
正しい番号の見つけ方:
- ページを開いてソースを表示します。Windows の Chrome なら Ctrl+U、Mac なら Option+Command+U です。
- Ctrl+F(Mac は Command+F)で
<tableを検索します。見つかった 1 つ 1 つが表で、その順番が IMPORTHTML の数え方です。 - 表に見えている値を含むものを探し、それが何番目かを数えます。それが index です。
数えるのが面倒なら、隣り合うセルに index を 1、2、3… と変えた数式を並べ、合っているものを残す方法もあります。
取り込む表が見つからないとき
ヘルプは index を「HTML ソース内で定義されている番号」と説明しています。JavaScript で後から作られる表や、ログインが必要なページを読めるかどうかについては、ヘルプに記載がありません。自分のページは次の手順で確かめられます。
- ソースを表示します(上と同じ)。
- 表に見えている値を検索します。
- ソースになければ、表はページの読み込み後に作られています。ヘルプの説明どおりなら、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日に確認。