SyncedBlock: NotionRubyMapping 解説 (28)

はじめに

NotionRubyMapping 解説の第28回目です。今回は同期ブロックを管理する SyncedBlock を解説します。今日の作業ページはこちらです。

hkob.notion.site

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

irb(main):002> page = Page.find "https://hkob.notion.site/SyncedBlock-28-73a0025194ee4113af1f6594d1c59429?pvs=4"
=> NotionRubyMapping::Page-73a0025194ee4113af1f6594d1c59429

SyncedBlock

SyncedBlock はオリジナルとコピーで作成方法が異なります。まず最初にオリジナルの同期ブロックを作成します。作成時に sub_blocks を指定するとオリジナルになります。

irb(main):003> osb = page.append_block_children SyncedBlock.new(sub_blocks: [BulletedListItemBlock.new("First"), BulletedListItemBlock.new("Second"), BulletedListItemBlock.new("Third")])
=> NotionRubyMapping::SyncedBlock-a376e1028d544d1a9fa4a5e8571f8508

実行した結果以下のような同期ブロックが用意されました。カーソルを合わせると赤い枠が出るので、同期ブロックであることがわかります。

オリジナル同期ブロック

この同期ブロックのコピーを作成します。コピー版の同期ブロックを作成するには、オリジナルの同期ブロックの id を block_id に渡します。

irb(main):004> csb = page.append_block_children SyncedBlock.new(block_id: osb.id)
=> NotionRubyMapping::SyncedBlock-ba8a8d61b9cf45f48a38c71e47279ed7

実行した結果以下のようなコピー版の同期ブロックが用意されました。カーソルを合わせると赤い枠が出るので、こちらも同期ブロックであることがわかります。上のオリジナルと同じものが表示されているのがわかります。

コピー同期ブロック

おわりに

今回は SyncedBlock を解説してみました。オリジナルの同期ブロックを作成後に、そのブロックの ID を block_id として渡すことで、コピー版の同期ブロックが作成できました。

SyncedBlock のマニュアルはこちらです。

hkob.notion.site

NotionRubyMapping解説