はじめに
NotionRubyMapping 解説の第26回目です。複数列を管理する ColumnListBlock
と単一の列を管理する ColumnBlock
の組み合わせで、複数列を実現します。今日の作業ページはこちらです。
あらかじめページを取得しておきます。
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 の子ブロックを確認すると以下のように 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
に列を追加する場合には、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 により列が一つ増えていることがわかります。
おわりに
今回は ColumnListBlock
を解説してみました。作成時には配列を渡すことで ColumnBlock
を自動で設定してくれます。ただし、後から追加する場合には、ColumnBlock
を作成してから追加する必要があります。
ColumnListBlock, ColumnBlock のマニュアルはこちら。