CalloutBlock: NotionRubyMapping 解説 (25)

はじめに

NotionRubyMapping 解説の第25回目です。絵文字か外部ファイルをアイコンとして設定できる CalloutBlock を解説します。今日の作業ページはこちらです。

hkob.notion.site

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

irb(main):002> page = Page.find "https://hkob.notion.site/CalloutBlock-25-67b2216993d346d38aac5bb63cce0271?pvs=4"
=> NotionRubyMapping::Page-67b2216993d346d38aac5bb63cce0271

CalloutBlock

CalloutBlock はチェックボックスを持つテキストブロックです。 text_infocolor が設定できるのは ParagraphBlock と同様です。さらに、emojifile_url のどちらかを設定できます。最初に emoji を設定してみます。

irb(main):003> ecb = page.append_block_children CalloutBlock.new("emoji callout", emoji: "")
=> NotionRubyMapping::CalloutBlock-e8f2bb25174e4a668347e0b8863dce3f

実行した結果以下のようなコールアウトが用意されました。

emoji

上に書いたように color で色も設定できます。

irb(main):004> ecb2 = page.append_block_children CalloutBlock.new("emoji callout", emoji: "☘️", color: "green_background")
=> NotionRubyMapping::CalloutBlock-da003d126f9742e4b722678091d4b1db

結果は以下のようになりました。

emoji_color

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_subblocks

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

実行すると以下のようになりました。

file

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

irb(main):008> fcb.color = "orange_background"
=> "orange_background"
irb(main):009> fcb.save
=> NotionRubyMapping::CalloutBlock-ebb79997310a42e5ad93d43ba98aee7e

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

file_color

作成時に 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]

子ブロックが作成されていることがわかります。

file_append_block_children

おわりに

今回は CalloutBlock を解説してみました。CalloutBlock は TextSubBlockColorBaseBlock の子クラスにはなっていませんが、ほとんどこれまで解説していたものと同じ機能があることがわかります。これも TextSubBlockColorBaseBlock の子クラスにしてしまってもいいかもしれません。

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

hkob.notion.site

NotionRubyMapping解説