FileBlock, ImageBlock: NotionRubyMapping 解説 (19)

はじめに

NotionRubyMapping 解説の第19回目です。TextSubBlockColorBaseBlock の子クラスがだいたい終わったので、今度は FileBaseBlock の子クラスを解説します。ほとんど機能がないので、全部一括で紹介してもいいのですが、長くなりそうなので二つずつ紹介する形にします。今日の作業ページはこちらです。

hkob.notion.site

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

irb(main):002> page = Page.find "https://hkob.notion.site/FileBlock-ImageBlock-19-0195c24a4acf4e83bcfa6eb7e1fdaf84?pvs=4"
=> NotionRubyMapping::Page-0195c24a4acf4e83bcfa6eb7e1fdaf84

FileBlock

FileBlock はファイルのリンクを保持するブロックです。Notion のアプリでは、ファイル自体をアップロードして Notion のサーバに置くことができますが、Notion API ではアップロード機能は提供されておらず、外部にあるリンクを保持するだけになります。

irb(main):003> fb = page.append_block_children FileBlock.new("https://img.icons8.com/ios-filled/250/000000/mac-os.png", caption: "macOS icon")
=> NotionRubyMapping::FileBlock-53ac00c111dd4ab2be697251e726b0e0

実行した結果以下のようなファイルリンクが用意されました。

ImageBlock

ImageBlock

同じ URL を ImageBlock で設定すると画像が表示できるブロックになります。

irb(main):004> ib = page.append_block_children ImageBlock.new("https://img.icons8.com/ios-filled/250/000000/mac-os.png", caption: "macOS icon")
=> NotionRubyMapping::ImageBlock-c39f74d093aa403186eb35e8ab1020a6

ImageBlock

なお、url で設定した URL が取得できます。url = で更新することもできます。また、caption で RichTextArray object が取得できます。こちらも編集は可能です。

irb(main):014> ib.url
=> "https://img.icons8.com/ios-filled/250/000000/mac-os.png"
irb(main):015> ib.caption
=>
#<NotionRubyMapping::RichTextArray:0x0000000160058118
 @key="caption",
 @rich_text_objects=
  [#<NotionRubyMapping::TextObject:0x0000000160238578
    @options=
     {"plain_text"=>"macOS icon",
      "bold"=>false,
      "italic"=>false,
      "strikethrough"=>false,
      "underline"=>false,
      "code"=>false,
      "color"=>"default",
      "href"=>nil},
    @text="macOS icon",
    @type="text",
    @will_update=false>],
 @will_update=false>

おわりに

今回は FileBaseBlock の子クラスである FileBlock, ImageBlock を解説してみました。次回は PDFBlock, VideoBlock などを紹介します。

FileBlock や ImageBlock のマニュアルはこちら。

hkob.notion.site

hkob.notion.site

NotionRubyMapping解説