シンプルテーブルのセル内箇条書き : hkob の雑記録 (402)

はじめに

hkob の雑記録の第402回目(通算799日目)は、シンプルテーブルのセル内に箇条書きや番号リストを記述できるようになった件を検証します。

試してみる

実際にシンプルテーブルのセル内で「-」「スペース」とすると、箇条書きに変わりました。また、1. としてみると番号リストになっています。番号リストの方は途中で切り替えて、a. などの別の記号にすることもできました。意外と自由度が高いです。

シンプルテーブルのセル内箇条書き

データ構造はどうなっている?

データ構造がどうなっているのか気になるので、API で内容を確認してみます。

nrm_console.rb
irb(main):001> block = Block.find "https://www.notion.so/hkob-private/Notion-hkob-2fd0ce2a65208186a400c06e6311d5bd?source=copy_link#2fe0ce2a652080a2b60dedfa1f35dd14"
=> NotionRubyMapping::TableBlock-2fe0ce2a652080a2b60dedfa1f35dd14
irb(main):002> rows = block.children.to_a
=> [NotionRubyMapping::TableRowBlock-2fe0ce2a652080cc816ae6548c44d604, NotionRubyMapping::TableRowBlock-2fe0ce2a6520801c94efd8d06d234432]
irb(main):003> r0 = rows.first
=> NotionRubyMapping::TableRowBlock-2fe0ce2a652080cc816ae6548c44d604
irb(main):004> r0.json
=>
{"object" => "block",
 "id" => "2fe0ce2a-6520-80cc-816a-e6548c44d604",
 "parent" => {"type" => "block_id", "block_id" => "2fe0ce2a-6520-80a2-b60d-edfa1f35dd14"},
 "created_time" => "2026-02-05T10:22:00.000Z",
 "last_edited_time" => "2026-02-05T10:51:00.000Z",
 "created_by" => {"object" => "user", "id" => "fffd872b-594c-811b-8218-0002b0392cd8"},
 "last_edited_by" => {"object" => "user", "id" => "fffd872b-594c-811b-8218-0002b0392cd8"},
 "has_children" => false,
 "archived" => false,
 "in_trash" => false,
 "type" => "table_row",
 "table_row" =>
  {"cells" =>
    [[{"type" => "text",
       "text" => {"content" => "  • 東\n  • 西\n  • 南\n  • 北\n", "link" => nil},
       "annotations" =>
        {"bold" => false, "italic" => false, "strikethrough" => false, "underline" => false, "code" => false, "color" => "default"},
       "plain_text" => "  • 東\n  • 西\n  • 南\n  • 北\n",
       "href" => nil}],
     [{"type" => "text",
       "text" => {"content" => "  1. 春\n  2. 夏\n  3. 秋\n  4. 冬\nabc\ndef\n  a. bcd\n  b. cde\n  c. def", "link" => nil},
       "annotations" =>
        {"bold" => false, "italic" => false, "strikethrough" => false, "underline" => false, "code" => false, "color" => "default"},
       "plain_text" => "  1. 春\n  2. 夏\n  3. 秋\n  4. 冬\nabc\ndef\n  a. bcd\n  b. cde\n  c. def",
       "href" => nil}]]}}

単にテキストで入っているだけですね。内部のテキストの内容にしたがって、うまくインターフェースで対応しているだけのようです。テキストとしても前後に自動的にスペースを入れるようにしているようです。

API でテキストを作成すると?

せっかくなので、Notion API 側でテーブルを作成した時に箇条書きのように書くと対応してくれるのかを確認してみましょう。今回はわざとこのスタイルに合わせず、前にスペースを入れない形で箇条書きや番号をつけてみます。

irb(main):005> table = TableBlock.new table_width: 3, table_rows: [["- 1st\n- 2nd\n- 3rd", "・ ABC\n・ DEF\n・ GHI", "1. 起\n2. 承\n3. 転\n4. 結"]]
=> NotionRubyMapping::TableBlock-
irb(main):006> block.parent.append_block_children table
=> NotionRubyMapping::TableBlock-2fe0ce2a6520819b9ca4f39c7261183e

作成されたテーブルは以下のようになりました。最後の行で return をタイプしても箇条書きや番号が増えることはなく、ただのテキストになっていました。ただし、「-」の後ろでスペースを押したりすると、箇条書きに変更されていきました。

スペースなしで作成

試しに、先ほど取得したテキストで作成してみることにしました。

irb(main):007> table2 = TableBlock.new table_width: 1, table_rows: [["  1. 春\n  2. 夏\n  3. 秋\n  4. 冬\nabc\ndef\n  a. bcd\n  b. cde\n  c. def"]]
=> NotionRubyMapping::TableBlock-
irb(main):008> block.parent.append_block_children table2
=> NotionRubyMapping::TableBlock-2fe0ce2a6520818dbf0dcc6fb1913f9c

今度は先ほどと同じ表示になっています。試しに冬の後ろで return キーをタイプすると 5. が自動的に出てきました。やはり最初のスペースが重要なようです。

スペースありで作成

おわりに

今回は、シンプルテーブルのセル内に箇条書きや番号リストが記述できるようになった件を検証してみました。実際のデータ構造は単なるテキストで、インターフェースで対応しているだけのようです。これまでのデータ構造の互換性を壊すことなく、対応している点は素晴らしいですね。

hkob.notion.site