はじめに
NotionRubyMapping 解説の第14回目です。今日もほぼこれまでと同様の形式を持つ ToDoBlock を解説します。内容が同じなのは当たり前で、実はこれまでの二つの箇条書きと今日紹介する ToDoBlock は TextSubBlockColorBaseBlock
というクラスの子クラスだったのです。クラスの名前を見てわかるように RichTextArray を内部に持ち、子ブロックを持つことができ、色が設定できるブロックは全てこのクラスのサブクラスなのでした。今日の作業ページはこちらです。
あらかじめページを取得しておきます。
irb(main):002> page = Page.find "https://hkob.notion.site/ToDoBlock-24af2a159b04463ab253a5030a49f4dd?pvs=4" => NotionRubyMapping::Page-24af2a159b04463ab253a5030a49f4dd
ToDoBlock
ToDoBlock はチェックボックスを持つテキストブロックです。 text_info
と color
が設定できるのは ParagraphBlock
と同様です。
irb(main):003> td_a = page.append_block_children ToDoBlock.new("A", color: "purple") => NotionRubyMapping::ToDoBlock-309a2d3eabfa4a53b9c3dcabe104d037
実行した結果以下のような箇条書きが用意されました。
ToDo は子ブロックとして、下位のブロックを持つことができます。今作った ToDo の下に A-1 という ToDo を追加してみます。
irb(main):004> td_a.append_block_children ToDoBlock.new("A-1") => NotionRubyMapping::ToDoBlock-c99cf93f245b43dc9516dd515cd2ba1c
結果は以下のようになりました。BulletedListItemBlock
と同様に色を指定しないと親と同じ色になるのですね。
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 だけチェックが付いています。
ParagraphBlock
と同様に color =
で色を変更できます。
irb(main):006> td_b.color = "brown" => "brown" irb(main):007> td_b.save => NotionRubyMapping::ToDoBlock-6ecef9d7d79f4e11a0bb206087842bf3
結果はこんな感じになりました。
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
これでテキストも色が変わりました。
次に 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 にもチェックマークがつきました。
おわりに
今回は ToDoBlock
を解説してみました。TextSubBlockColorBaseBlock
の子クラスなので、これまで解説していたものと同じ機能があることがわかります。それに加えて、checked でチェックマークの読み取り、更新ができるようになっています。
ToDoBlock のマニュアルはこちら。