ToDoBlock: NotionRubyMapping 解説 (14)

はじめに

NotionRubyMapping 解説の第14回目です。今日もほぼこれまでと同様の形式を持つ ToDoBlock を解説します。内容が同じなのは当たり前で、実はこれまでの二つの箇条書きと今日紹介する ToDoBlock は TextSubBlockColorBaseBlock というクラスの子クラスだったのです。クラスの名前を見てわかるように RichTextArray を内部に持ち、子ブロックを持つことができ、色が設定できるブロックは全てこのクラスのサブクラスなのでした。今日の作業ページはこちらです。

hkob.notion.site

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

irb(main):002> page = Page.find "https://hkob.notion.site/ToDoBlock-24af2a159b04463ab253a5030a49f4dd?pvs=4"
=> NotionRubyMapping::Page-24af2a159b04463ab253a5030a49f4dd

ToDoBlock

ToDoBlock はチェックボックスを持つテキストブロックです。 text_infocolor が設定できるのは ParagraphBlock と同様です。

irb(main):003> td_a = page.append_block_children ToDoBlock.new("A", color: "purple")
=> NotionRubyMapping::ToDoBlock-309a2d3eabfa4a53b9c3dcabe104d037

実行した結果以下のような箇条書きが用意されました。

A

ToDo は子ブロックとして、下位のブロックを持つことができます。今作った ToDo の下に A-1 という ToDo を追加してみます。

irb(main):004> td_a.append_block_children ToDoBlock.new("A-1")
=> NotionRubyMapping::ToDoBlock-c99cf93f245b43dc9516dd515cd2ba1c

結果は以下のようになりました。BulletedListItemBlock と同様に色を指定しないと親と同じ色になるのですね。

A-1

ToDoBlock も作成時に sub_blocks を指定できます。また、ToDoBlock の第二引数に true を設定するとチェックボックスにチェックを入れた状態で作成できます。今回、B-2 だけ true にしてみました。

irb(main):005> td_b = page.append_block_children ToDoBlock.new("B", sub_blocks: [ToDoBlock.new("B-1"), ToDoBlock.new("B-2", true)])
=> NotionRubyMapping::ToDoBlock-6ecef9d7d79f4e11a0bb206087842bf3

結果は以下のようになりました。最初から階層的な箇条書きが記述できました。B-2 だけチェックが付いています。

B

ParagraphBlock と同様に color = で色を変更できます。

irb(main):006> td_b.color = "brown"
=> "brown"
irb(main):007> td_b.save
=> NotionRubyMapping::ToDoBlock-6ecef9d7d79f4e11a0bb206087842bf3

結果はこんな感じになりました。

BC1

ToDoの枠は色が変わっていますが、テキストは色が変わっていませんでした。rich_text_array で色を変更してみます。

irb(main):014> td_b.rich_text_array
=>
#<NotionRubyMapping::RichTextArray:0x00000001241304a0
 @key="rich_text",
 @rich_text_objects=
  [#<NotionRubyMapping::TextObject:0x00000001241bfa60
    @options={"plain_text"=>"B", "bold"=>false, "italic"=>false, "strikethrough"=>false, "underline"=>false, "code"=>false, "color"=>"default", "href"=>nil},
    @text="B",
    @type="text",
    @will_update=false>],
 @will_update=true>
irb(main):015> td_b.rich_text_array.first.color = "brown"
=> "brown"
irb(main):016> td_b.save
=> NotionRubyMapping::ToDoBlock-4b1221e8963d45c9bd63d8cfce2c7ee0

これでテキストも色が変わりました。

BC2

次に B-1 を取得して、checked に true を設定してみます。

irb(main):017> b_1 = td_b.children.first
=> NotionRubyMapping::ToDoBlock-d4436a2bcbed4b228a3e2462851d1544
irb(main):018> b_1.checked = true
=> true
irb(main):019> b_1.save
=> NotionRubyMapping::ToDoBlock-d4436a2bcbed4b228a3e2462851d1544

これで、B-1 にもチェックマークがつきました。

BC3

おわりに

今回は ToDoBlock を解説してみました。TextSubBlockColorBaseBlock の子クラスなので、これまで解説していたものと同じ機能があることがわかります。それに加えて、checked でチェックマークの読み取り、更新ができるようになっています。

ToDoBlock のマニュアルはこちら。

hkob.notion.site

NotionRubyMapping解説