ColumnListBlock, ColumnBlock: NotionRubyMapping 解説 (26)

はじめに

NotionRubyMapping 解説の第26回目です。複数列を管理する ColumnListBlock と単一の列を管理する ColumnBlock の組み合わせで、複数列を実現します。今日の作業ページはこちらです。

hkob.notion.site

あらかじめページを取得しておきます。

irb(main):002> page = Page.find "https://hkob.notion.site/ColumnListBlock-ColumnBlock-26-723df43498f34cd3bdde7fb91f1d1a48?pvs=4"
=> NotionRubyMapping::Page-723df43498f34cd3bdde7fb91f1d1a48

ColumnListBlock

ColumnListBlock は複数列を管理するブロックです。このブロックはブロックの Array を受け取ります。まず、昨日の CalloutBlock を二つ並べてみます。

irb(main):004> clb = page.append_block_children ColumnListBlock.new([CalloutBlock.new("emoji callout", emoji: ""), CalloutBlock.new("file icon callout", file_url: "https://img.icons8.com/ios-filled/250/000000/mac-os.png")])
=> NotionRubyMapping::ColumnListBlock-463feb01d9d64e1cadc44250a11a0838

実行した結果以下のようなコールアウトが用意されました。

ColumnListBlock with CalloutBlocks
Untitled

この ColumnListBlock の子ブロックを確認すると以下のように ColumnBlock が入っています。

irb(main):007> clb.children.to_a
=>
[NotionRubyMapping::ColumnBlock-bf2414cf635746eb8a4a27f076f2d3eb,
 NotionRubyMapping::ColumnBlock-cf3713aa353440708b693359a19d45b3]

現在は ColumnBlock の中には一つのブロックしか入っていませんが、複数のブロックを入れることもできます。最初から列に複数のデータを入れるには、配列の中にブロックの配列を入れればいいです。ここでは、最初の列に箇条書き、二番目の列に番号付き箇条書きを設定してみます。

irb(main):018> clb2 = page.append_block_children ColumnListBlock.new([[BulletedListItemBlock.new("B-1"), BulletedListItemBlock.new("B-2"), BulletedListItemBlock.new("B-3")], [NumberedListItemBlock.new("N-1"), NumberedListItemBlock.new("N-2"), NumberedListItemBlock.new("N-3")]])
=> NotionRubyMapping::ColumnListBlock-d897b459a8e94fcfb8279c1611a124f1

結果は以下のようになりました。

ColumnListBlock with BulletedListItemBlocks and NumberedListItemBlocks

作成時には配列で設定できますが、既存の ColumnListBlock に列を追加する場合には、ColumnBlock を作成して追加する必要があります。

irb(main):020> clb2.append_block_children ColumnBlock.new([ToDoBlock.new("T-1"), ToDoBlock.new("T-2"), ToDoBlock.new("T-3")])
=> NotionRubyMapping::ColumnBlock-51c1c0a8b848402ebac963d6ddd9ce03

ColumnBlock により列が一つ増えていることがわかります。

Append ColumnBlock with ToDoBlocks

おわりに

今回は ColumnListBlock を解説してみました。作成時には配列を渡すことで ColumnBlock を自動で設定してくれます。ただし、後から追加する場合には、ColumnBlock を作成してから追加する必要があります。

ColumnListBlock, ColumnBlock のマニュアルはこちら。

hkob.notion.site

hkob.notion.site

NotionRubyMapping解説