Slackで表を作る方法:貼り付け、キャンバス、Block Kit
ExcelやGoogleスプレッドシートのセルをコピーしてSlackのメッセージに貼ると、タブ区切りのテキストが本物の表になります。上限は20列、100行、10,000文字(2026年10月6日に検証)。コードブロック、キャンバスの表、Block Kitのtable blockと、試して出たエラーもまとめました。
On this page
Slackのメッセージで表を作るには、ExcelかGoogleスプレッドシートでセルをコピーし、メッセージ欄に貼り付けます。Slackはタブ区切りのテキストを本物の表に変えます。入力欄に「Table added as an attachment」(表を添付ファイルとして追加しました)と出て、送信したメッセージには1行目が太字の表が表示されます。2026年10月6日に、フリープランのワークスペースでWeb版Slackを使って試しました。書式のツールバーには今も表のボタンがなく、10月6日にはChatGPTのマークダウンの表を貼ると縦線の記号のまま入りましたが、10月27日の再テストでは、プレーンテキストで貼り付けた縦線の表も本物の表(table ブロック)になりました。CSVやJSONは今も表になりません。私たちのSlack表メーカーは、マークダウン、CSV、JSONをSlackが受け付けるタブ区切りのテキストに変えます。みんなで編集し続ける表なら canvas (キャンバス)を使います。ボットはBlock Kitの table block を送ります。
下の貼り付けテスト、その上限、Block Kitの応答は、2026年10月6日に私たちのワークスペースで確かめたものです。キャンバスの上限はSlackの開発者向けドキュメントによります。
どの方法で表を作るか
| 方法 | 使える場所 | できるもの | 向いている用途 |
|---|---|---|---|
| タブ区切りのセルを貼り付ける | すべてのメッセージ、全プラン | 本物の表、最大100行20列 | シートやレポートの行 |
| コードブロック | すべてのメッセージ、全プラン | 表のようにそろったテキスト | 表を出せないアプリ、20列を超える表 |
| キャンバスの表 | キャンバス(有料プラン) | 編集できる本物のセル | 更新して残しておく表 |
| Slackリスト | リスト(有料プラン) | 担当者、期日、状態のある行 | タスクの管理 |
| Block Kitのtable block | アプリが送るメッセージ | 本物の行と列、最大100行20列 | ボットのレポートや通知 |
担当者と期日のあるToDoの表なら、どれよりもSlackリストが合います。Slackのキャンバスとリストの違いをご覧ください。チャンネルに追加したキャンバスやリストは、チャンネル名の下のタブに並びます。Slackのチャンネルのタブのテストでは、フリープランのタブ追加メニューにキャンバスは出ましたが、リストはProプランが必要でした。
Slackのメッセージに本物の表を貼り付ける方法
- ExcelかGoogleスプレッドシートでセルを選んでコピーします( Cmd+C か Ctrl+C )。ChatGPTの表、CSV、JSONなら、先にSlack表メーカーに貼り、 Copy table for Slack をクリックします。
- Slackのメッセージ欄をクリックして貼り付けます。Slackは「Table added as an attachment」と表示し、入力欄の下に Table のチップを出します。
- 必要なら上に1行書いてから送信します。
- 行を入力するか貼り付け、各列が同じ位置から始まるように列のあいだにスペースを入れます。
- テキストを選んで書式のツールバーの Code block をクリックするか、Macなら Cmd+Option+Shift+C (Windowsなら Ctrl+Alt+Shift+C )を押します。テキストの前後にバッククォートを3つずつ打っても同じです。
- メッセージ欄のプレビューを確認して送信します。
チップを開くと読み取り専用の表のプレビューになるので、セルはコピーする前に直しておきます。次の画像は、表メーカーのGoogleスプレッドシートのサンプルを送信したあとのもので、1つのセルの中に改行があります。
10月6日に、フリープランのワークスペースのメッセージ欄に貼り付け、APIで各メッセージを読み返して測った結果です。
| 貼り付けたもの | Slackの動き |
|---|---|
| タブ区切りの行、2行2列以上 | 本物の表、1行目は太字 |
| 20列、100行、10,000文字 | 本物の表 |
| 21列、101行、または10,001文字 | 「This table is too big to send as an attachment. Send a snippet instead?」(表が大きすぎて添付できません。スニペットとして送りますか?) |
| 行ごとにセルの数が違う | ただのテキスト |
| 1行だけ、または1列だけ | ただのテキスト |
| 縦線のマークダウンの表 | 10月6日はただのテキスト、10月27日の再テストでは本物の表 |
| カンマ区切りのCSV | ただのテキスト |
| 同じメッセージに2つ目の表 | 「Only 1 table can be attached to each message. Paste as text instead?」(表は1メッセージに1つまでです。テキストとして貼りますか?) |
Slackは10,000文字をUTF-16の単位で数えるので、絵文字や 𝐀 のような記号は2文字になります。貼り付けた表の中では、<@user>、@channel、リンク、*bold*、` code はただの文字のままで、絵文字に変わるのは :emoji:` のコードだけです。Googleスプレッドシートのように、クリップボードにタブ区切りのテキストと並んで太字とリンク入りのHTMLの表が入っている場合も、Slackはプレーンテキストから表を作り、太字とリンクは落としました。
コードブロックでテキストの表を作る
Slackはコードブロックを等幅フォントで表示するので、どの文字も同じ幅になり、列がそろいます。
Name Task Status
---- ----------- ---------
Jane Launch post Done
Sam QA In review
Mira Design Waiting
表の幅は60文字くらいまでにしないと、スマホの画面に収まりません。コードブロックの中では太字、リンク、メンションは使えません。
スペースを合わせる手間を省くなら、Slack表メーカーの As a code block タブが列をそろえてくれます。長いメッセージの中のマークダウンの表なら、マークダウンからSlackへの変換ツールが同じことをします。
マークダウンの表を貼り付ける
Slackのメッセージ欄は、貼り付けたマークダウンの表を読み取るようになりました。2026年10月28日に、HTMLを含まないプレーンテキストの次の表をコピーし、Web版Slackのチャンネルに Cmd+V で貼り付けました。
| Task | Owner | Hours |
| --- | --- | --- |
| Launch post | Jane | 6 |
| QA pass | Sam | 12 |
メッセージ欄のテキストは、見出しのセル名が付いた Table のチップに置き換わりました。
Enterで送ると、見出しの行が太字の表になり、| --- | の行は消えていました。
conversations.history で読み返すと、メッセージには raw_text のセルを持つ table ブロックが1つあり、ブロックを表示できない場所向けの text は「This message contains interactive elements.」でした。表になるのは貼り付けたときだけです。自分で打った縦線は打ったとおりの文字のままで(10月27日のテストでは | Plan | Price | がただのテキストとして保存されました)、Slackの書式mrkdwnには表の書き方がないからです。手で列をそろえるなら、上のコードブロックの方法を使います。
Slackのキャンバスで本物の表を作る方法
キャンバスは、チャンネルやDMの中にあるSlackのドキュメントで、ツールバーに表の項目があります。
Slackの開発者向けドキュメントでは、キャンバスの表は行と列の組み合わせにかかわらず1つあたり300セルまでです。単独のキャンバスは有料プランの機能で、Slackは Create new > Canvas にProの印を付けています。ワークスペースがフリープランに戻ると、既存のキャンバスは読み取り専用になります。フリーのワークスペースでもチャンネルにキャンバスのタブは追加でき、私たちがSlackキャンバスの書式ショートカットを試したのもそこです。Slackの中でマークダウンの表が使えるのはキャンバスの表だけです。canvases.create のAPIでキャンバスを作るアプリは、表をマークダウンで送れば、Slackが表にしてくれます。貼り付けでもできます。2026年10月29日、フリープランのチャンネルキャンバスにパイプ区切りの表を貼り付けると、編集できるキャンバスの表になりました。その週次報告の例はSlackキャンバスの例(英語)にあります。
CSVファイルをSlackの表にする
よく書き出すスプレッドシートなら、短いスクリプトで列をそろえられます。次を csv_to_slack.py として保存し、python3 csv_to_slack.py team.csv で実行すると、どのSlackのメッセージにも貼れるコードブロックが出力されます。
import csv
import sys
FENCE = "`" * 3
with open(sys.argv[1], newline="") as f:
rows = list(csv.reader(f))
ncols = max(len(r) for r in rows)
rows = [r + [""] * (ncols - len(r)) for r in rows]
widths = [max(len(r[i]) for r in rows) for i in range(ncols)]
lines = [" ".join(c.ljust(w) for c, w in zip(r, widths)).rstrip() for r in rows]
lines.insert(1, " ".join("-" * w for w in widths))
print("\n".join([FENCE, *lines, FENCE]))
上の例のもとになった team.csv なら、出力はコードブロックの章で見せた表に、見出しの下の破線が加わったものです。列が5〜6を超えるCSVなら、キャンバスの表のほうが読みやすくなります。
Block Kitのtable blockでSlackアプリから表を送る
アプリはメッセージに本物の表を投稿できます。SlackのBlock Kitには table ブロックがあり、上限は貼り付けと同じでした。101行で chat.postMessage は no more than 100 items allowed を返し、1行に21セルで no more than 20 items allowed、10,001文字で table_character_count_must_not_exceed_10000 を返しました。セルは raw_text、raw_number、rich_text(太字、リンク、メンション用)のどれかで、column_settings で列ごとに折り返しと配置を決めます。同じテストで見つけた落とし穴が2つあります。column_settings に null を入れると must provide an object で失敗するので、設定のない列には {} を使います。空の raw_text セルは must be more than 0 characters で失敗するので、空のセルは null で送ります。Slack表メーカーの From a bot タブは、貼り付けた表からこのJSONを作ります。
メッセージを table.json として保存します。
{
"channel": "C0123456789",
"text": "Launch status: 3 tasks",
"blocks": [
{
"type": "table",
"column_settings": [{"is_wrapped": true}, {}, {"align": "right"}],
"rows": [
[{"type": "raw_text", "text": "Task"}, {"type": "raw_text", "text": "Owner"}, {"type": "raw_text", "text": "Hours"}],
[{"type": "raw_text", "text": "Launch post"}, {"type": "raw_text", "text": "Jane"}, {"type": "raw_text", "text": "6"}],
[{"type": "raw_text", "text": "QA pass"}, {"type": "raw_text", "text": "Sam"}, {"type": "raw_text", "text": "12"}]
]
}
]
}
あとはボットトークンを使って chat.postMessage で投稿します。
curl -X POST https://slack.com/api/chat.postMessage \
-H "Authorization: Bearer $SLACK_BOT_TOKEN" \
-H "Content-type: application/json; charset=utf-8" \
--data @table.json
text は通知に表示される代わりの文字です。長い表は複数のメッセージに分けるようSlackのドキュメントは書いています。並べ替えやページ送りのできる表や、横にグラフを付けたい場合、アプリは新しい data_table と data_visualization のブロックを使えます。両方を試し、それぞれが返すエラーをSlackのBlock Kitのグラフにまとめました。
LLMの回答のようにすでにマークダウンを出力するアプリなら、もっと短い道があります。Block Kitの markdown block ("type": "markdown")は標準のマークダウンを受け付けます。10月6日に下の縦線の表を送ると、Slackはそれを table ブロックとして保存しました。貼り付けと違い、見出しの行は太字になりませんでした。1つのメッセージのmarkdown blockは、合わせて12,000文字までです。
{
"channel": "C0123456789",
"text": "Launch status",
"blocks": [
{"type": "markdown", "text": "| Task | Owner |\n| --- | --- |\n| Launch post | Jane |\n| QA pass | Sam |"}
]
}
表以外にボットが投稿するテキストは、マークダウンからSlackへの変換ツールのSlack to Markdownの側で、送る前にmrkdwnをプレビューできます。
スマホのSlackでの表
iPhoneとAndroidのSlackアプリでは、幅の広いコードブロックは画面に収まりません。読む人の多くがスマホなら、コードブロックの表は短い2〜3列にするか、箇条書きかキャンバスを使います。コードブロックやリストのSlackのキーボードショートカットが使えるのはデスクトップだけです。
よくある質問
Slackのマークダウンは表に対応していますか?
自分で打つメッセージの縦線の表には対応していません。| と --- は打ったとおりに表示されます。メッセージ欄が表に変えるのは、貼り付けたタブ区切りのテキストと、10月27日の再テストでは貼り付けた縦線の表です。マークダウンの表が使えるのは、Slack APIで作るキャンバスと、アプリが送るBlock Kitのmarkdown blockです。
Excelの表をSlackに貼り付けるには?
セルをコピーしてメッセージ欄に貼り付けます。Slackは100行、20列、10,000文字までなら本物の表にします。それを超えると、代わりにスニペットで送るか聞いてきます。
Slackのメッセージに表のボタンはありますか?
ありません。メッセージのツールバーにあるのは太字、斜体、下線、取り消し線、コード、引用、コードブロック、リストです。表を入れる方法はタブ区切りのセルの貼り付けで、表のボタンはキャンバスにあります。
関連記事
Slackのコードブロック:ショートカット、色分け、スニペット
Slackの入力欄でバッククォートを3つ入力するか、Cmd+Alt+Shift+Cを押すとコードブロックになります。バッククォートのあとの言語名がどうなるかを試し、色分けされたスニペットを実際に作り、ボットの4,000文字を超えるコードブロックが分割されて表示されなくなることも確かめました。
Slackの拡大・縮小:ショートカット、上限、文字が小さいときの直し方
Slackの拡大はCmdと+(WindowsはCtrlと+)、縮小はCmdと-、元に戻すのはCmdと0です。Slackのコードでは拡大は5段階(249%)、縮小は3段階(58%)まで。2026年11月2日にSlack 4.52.182から読み取りました。
Slackで送信せずに改行する方法
Slackのメッセージで送信せずに改行するにはShift+Enterを押します。Enterで改行したいなら、環境設定の詳細設定で、メッセージを書くときのEnterキーを「改行する」に変え、Cmd+EnterかCtrl+Enterで送信します。スマホ、リスト、コードブロック、APIでの改行もまとめました。