Quillfold

Web の表を Markdown・JSON にする(ChatGPT や GitHub、メモに貼る)

Web の表をコピーして、テキストだけを受け取る入力欄(多くのフォーム、コードエディタ、チャットの入力欄など)に貼ると、列の区切りが失われて列が崩れることがあります。値がつながって 1 行になったり、セルが 1 つずつ別の行に分かれたりします。あるいは、プログラムで使うために表を JSON にしたいこともあるでしょう。

Markdown も JSON もただのテキストなので、どんな入力欄に貼っても形が残ります。このページでは、貼ると崩れることがある理由、それぞれの形式で表せること・表せないこと、変換の方法を順に書きます。

貼ると表が崩れる理由

Web ページの一部をコピーすると、ブラウザはクリップボードに複数の形を入れます。W3C の Clipboard API の草案には、ページの内容が選ばれているときは text/html と text/plain の形式を作るべきだ、と書かれています。

どちらを使うかは、貼り付け先が決めます。

  • 表計算ソフトやリッチテキストのエディタは、HTML のほうを使えます。HTML には表の行とセルの区切りが残っています。
  • プレーンテキストの入力欄(多くのチャットの入力欄、コードエディタ、Issue のフォームなど)には、テキストのほうが入ります。表の構造はなく、文字だけです。セルの境目がどうなるかは、ブラウザとページ次第です。結合セルやリンク、脚注があると、さらに崩れます。

そのため、貼る前に、構造を文字で持てる形式に変えておくのが確実です。

Markdown の表で表せること

GitHub Flavored Markdown(GFM)の仕様では、表は「見出しの行が 1 つ、見出しとデータを分ける区切りの行、0 行以上のデータの行」でできています。

| 都道府県 | 人口(2025年) |
| --- | --- |
| 東京都 | 14,236,627 |
| 神奈川県 | 9,193,922 |

数字は Wikipedia「都道府県の人口一覧」より(2026年10月16日確認)。

GitHub では、Issue、プルリクエスト、コメント、README で表として表示されます。GitHub Docs によると、見出しの下の区切りは各列 3 つ以上のハイフンが必要で、表の前には空行が要ります。

Web の表を変えるときに効いてくる制約は次のとおりです。

  • 見出しは 1 行だけ。 「2024年」の下に「上半期」「下半期」が並ぶような 2 段の見出しは、先に 1 行にまとめる必要があります。
  • 結合セルは表せない。 行や列をまたがせる書き方がありません。3 行にまたがる値は、各行に繰り返すか、最初の行にだけ入れるかのどちらかです。
  • | はエスケープが要る。 セルの中の | はセルの区切りとして読まれるので、\| と書きます(GitHub Docs)。
  • セルの中で改行できない。 1 行が 1 つの行で、GFM の仕様には「ブロック要素は表の中に入れられない」とあります。GitHub では、セルの中に HTML の <br> を書けます。2026年10月16日に GitHub の Markdown API で | Line<br>break | a\|b | を変換したところ、1 つ目のセルは改行され、2 つ目は a|b と表示されました。
  • 列の数。 GFM では、セルが足りない行は空のセルで埋められ、多い行は余りが捨てられます。結合セルのせいでセルが 1 つ少ない行は、何も言われずに左に詰まります。

JSON にするときに決めること

プログラムで使うなら、1 行を 1 つのオブジェクトにし、列の見出しをキーにした配列がよく使われます。

[
  { "都道府県": "東京都", "人口(2025年)": "14,236,627" },
  { "都道府県": "神奈川県", "人口(2025年)": "9,193,922" }
]

変換の道具が決めていることで、結果を見て確かめたいのは次の点です。

  • 同じ名前の見出し。 「人口」という列が 2 つあると、1 つのオブジェクトに同じキーは置けないので、片方が消えます。キーを別の名前にする必要があります。
  • 空の見出し。 見出しのない列にも、何かキーが要ります。
  • 数字。 「14,236,627」「−0.18%」「1,200円」は、ページ上では文字です。文字列のまま出すかどうかは道具によって違うので、結果を確かめてください。数値にするのは別の作業で、国によって書き方が違うので(ヨーロッパの表では 1.234,5 が 1234.5 を表すことがあります)、決まった正解はありません。
  • 結合セルと 2 段の見出し。 Markdown と同じです。

変換の方法

GitHub の入力欄に貼る

GitHub の 2022年5月19日の更新情報(Changelog)によると、プルリクエスト・Issue のコメント・Wiki では、貼り付けたスプレッドシートのセルや HTML の表が Markdown の表になります。この変換をせずに貼るには Ctrl+Shift+V(Mac は Cmd+Shift+V)です。コメント欄に貼って「Preview」で確かめてください。GitHub はこのためのオープンソースのライブラリ paste-markdown も公開しています。以下は github.com での動作を試した結果ではなく、このライブラリのソース(2026年10月16日に確認)での処理です。1 行目を見出しにし、2 行目以降は <td> のセルだけを拾うので、<th> のセルは行のどこにあっても抜け、<th> だけの行(2 段目の見出しなど)は空の行になります。セルの文字は textContent で読むので、Wikipedia の非表示の並べ替え用の文字も入ります。ほかに | のエスケープ、改行の空白への置き換えをし、rowspan・colspan は展開しません。単純な表なら、いちばん手早い方法です。

変換サイト

tableconvert.com などには「HTML Table to Markdown」のページがあります。表を右クリックして「検証」を開き、<table> の要素の HTML をコピーして貼ると、Markdown が出てきます。サイトは「Convert HTML Table to Markdown Table Online」のページで、変換はブラウザ内で行い、データは端末から出ないと説明しています(2026年10月16日確認)。社外に出せないデータでは、その説明と通信の有無を確かめてから使ってください。

拡張機能

表を Markdown としてコピーする Chrome 拡張機能はいくつかあり、AI に貼ることを目的にしたものもあります。そのひとつ「Copy as Markdown for AI」は、ストアの説明に、結合セル(rowspan・colspan)を展開して GFM の表にすること、データがブラウザの外に出ないことを書いています(2026年10月16日確認)。結合セルの扱いを説明していない拡張機能もあります。使う前に、結合セルと 2 段の見出しがある表で、値が正しい列に入るか、セルの中の | がエスケープされるかを確かめてください。

プログラム

Python を書けるなら、pandas.read_html でページの表をすべて DataFrame として読めます。pandas 3.0 のドキュメントには「colspan と rowspan を正しく扱うよう試みる」とあります。そのあと DataFrame.to_json(orient="records") で、上の形の JSON になります。

AI に表を貼るとき

社内システムの表を外部のサービスに貼れば、データは手元から出ていきます。先に社内の決まりを確かめてください。

TablePick でできること

TablePick は私たちの拡張機能で、開いているタブの表を読み、選んだ表を Markdown や JSON(ほかに XLSX・CSV・TSV)で書き出します。書き出しのプログラムとそのテストで確かめている、現在の動作は次のとおりです。

  • Markdown: GFM の表です。見出しの行が 1 つ、| --- | の区切りの行、そのあとにデータが続きます。セルの中の | は \| に、\ は \\ にします。セルの中の改行は、初期設定では空白にします。整形オプションの「セル内の改行を保持」をオンにすると <br> で書きます。
  • JSON: 列の見出しをキーにしたオブジェクトの配列で、2 文字の空白で字下げします。同じ見出しには _2 のような番号を付け(名前、名前_2)、空の見出しは位置に応じて column_1、column_2 などにします。値はすべて文字列で、ページに表示されているとおりです。
  • レポート(任意): 「レポートを含める」をオンにすると、JSON は { "report": …, "rows": [ … ] } の形になり、取得元の URL・日時・ページ数・件数チェック・終了理由が入ります。レポートが付くのはファイルに書き出すときだけで、コピーには付きません。Markdown には入りません。
  • 変換の前に: 結合セルはまたがる各行に値を入れて展開し(切り替えできます)、複数行の見出しは「2024年 / 上半期」のように 1 行にまとめ、初期設定では非表示の行は外します。「[1]」のような脚注記号も外せます。パネルで列の名前変更・並べ替え・非表示ができます。
  • コピー: 形式に Markdown か JSON を選んでいるときは、その文字がクリップボードに入るので、チャットの入力欄やエディタにそのまま貼れます。
  • 手元で処理: 表は、ブラウザの中で読み取って変換します。表のデータはどこにも送りません。

ここまではすべて無料プランで使えます。複数のページにまたがる表は 1 つにまとめて書き出せます。無料プランでは 1 回 3 ページまでで、Pro ではそれ以上取り込めます。Pro の「数値を整形」(1,234.5 → 1234.5)も使えますが、JSON では整形後も文字列のままです。

これが要らない場合

  • 見出しが 1 行で結合セルもない小さな表を GitHub に載せたい:コメント欄に貼って、プレビューで確かめれば十分です。
  • 表がもう Excel や Google スプレッドシートに入っている:そこからセルをコピーします。GitHub はスプレッドシートのセルを貼っても Markdown の表に変えます。
  • サイトに CSV や JSON のダウンロード、API がある:それを使ってください。いちばん完全なデータです。

結合セルと 2 段の見出しは「列名が「Column 1」になる・結合セルや見出しが崩れる」で、Wikipedia の表は「Wikipedia の表を Excel・CSV に取り込む」で、表計算ソフトへの取り込みは「Web の表を Excel に取り込むときにつまずく 4 つのこと」で詳しく書いています。

根拠

2026年10月16日に確認。

ガイドの一覧