はじめに
NotionRubyMapping 解説の第25回目です。絵文字か外部ファイルをアイコンとして設定できる CalloutBlock を解説します。今日の作業ページはこちらです。
あらかじめページを取得しておきます。
irb(main):002> page = Page.find "https://hkob.notion.site/CalloutBlock-25-67b2216993d346d38aac5bb63cce0271?pvs=4" => NotionRubyMapping::Page-67b2216993d346d38aac5bb63cce0271
CalloutBlock
CalloutBlock
はチェックボックスを持つテキストブロックです。 text_info
と color
が設定できるのは ParagraphBlock
と同様です。さらに、emoji
か file_url
のどちらかを設定できます。最初に emoji を設定してみます。
irb(main):003> ecb = page.append_block_children CalloutBlock.new("emoji callout", emoji: "✅") => NotionRubyMapping::CalloutBlock-e8f2bb25174e4a668347e0b8863dce3f
実行した結果以下のようなコールアウトが用意されました。
上に書いたように color で色も設定できます。
irb(main):004> ecb2 = page.append_block_children CalloutBlock.new("emoji callout", emoji: "☘️", color: "green_background") => NotionRubyMapping::CalloutBlock-da003d126f9742e4b722678091d4b1db
結果は以下のようになりました。
CalloutBlock
も作成時に sub_blocks
を指定できます。
irb(main):006> ecb = page.append_block_children CalloutBlock.new("emoji callout with block", emoji: "❤️", sub_blocks: NumberedListItemBlock.new("First")) => NotionRubyMapping::CalloutBlock-009b6c3a15634327910b7d177cbdf77f
結果は以下のようになりました。コールアウトの中に箇条書きブロックが含まれています。
emoji の代わりに file_url を設定すると外部ファイルをアイコンにできます。
irb(main):007> fcb = page.append_block_children CalloutBlock.new("file icon callout", file_url: "https://img.icons8.com/ios-filled/250/000000/mac-os.png") => NotionRubyMapping::CalloutBlock-ebb79997310a42e5ad93d43ba98aee7e
実行すると以下のようになりました。
ParagraphBlock
と同様に color =
で色を変更できます。
irb(main):008> fcb.color = "orange_background" => "orange_background" irb(main):009> fcb.save => NotionRubyMapping::CalloutBlock-ebb79997310a42e5ad93d43ba98aee7e
結果はこんな感じになりました。
作成時に sub_blocks を設定しなくても、後から append_block_children で子ブロックを追加できます。
irb(main):014> fcb.append_block_children NumberedListItemBlock.new("macOS"), NumberedListItemBlock.new("iOS"), NumberedListItemBlock.new("iPadOS") => [NotionRubyMapping::NumberedListItemBlock-4febc8f8c9e0437ca8f323f8a0c49954, NotionRubyMapping::NumberedListItemBlock-57e92fe970594c1b859a20ca2c6eb581, NotionRubyMapping::NumberedListItemBlock-e5a2559b3c044187acca7e3602a73f55]
子ブロックが作成されていることがわかります。
おわりに
今回は CalloutBlock を解説してみました。CalloutBlock は TextSubBlockColorBaseBlock
の子クラスにはなっていませんが、ほとんどこれまで解説していたものと同じ機能があることがわかります。これも TextSubBlockColorBaseBlock
の子クラスにしてしまってもいいかもしれません。
CalloutBlock のマニュアルはこちら。