LinkToPageBlock: NotionRubyMapping 解説 (23)

はじめに

NotionRubyMapping 解説の第23回目です。これまで特別な親クラスを持つ Block を紹介してきましたが、今日からは単に Block の子クラスの Block を紹介していきます。今日は LinkToPageBlock を紹介します。今日の作業ページはこちらです。

hkob.notion.site

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

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

LinkToPageBlock

LinkToPageBlock はページの参照を保持してくれるブロックです。逆引き Formula のページを参照しようとしたところ、以下のようなエラーになりました。

irb(main):004> ltp = page.append_block_children LinkToPageBlock.new(page_id: "fbafcd96e1cc4f3982d914931af4969b")
/Users/hkob/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/notion_ruby_mapping-0.8.3/lib/notion_ruby_mapping/blocks/base.rb:142:in `append_block_children': {"object"=>"error", "status"=>400, "code"=>"validation_error", "message"=>"Only blocks within the same workspace and that are accessible to the integration can be synced", "request_id"=>"5c25ee74-b117-4b1d-9a65-76fe70a301c8"} (StandardError)
  from (irb):4:in `<main>'
  from <internal:kernel>:187:in `loop'
    from /Users/hkob/.rbenv/versions/3.3.0/lib/ruby/gems/3.3.0/gems/irb-1.11.1/exe/irb:9:in `<top (required)>'
  from /Users/hkob/.rbenv/versions/3.3.0/bin/irb:25:in `load'
  from /Users/hkob/.rbenv/versions/3.3.0/bin/irb:25:in `<main>'

リンク先の逆引きフォーミュラのページもインテグレーションキーに対して権限が必要とのことでした。このため、一時的に逆引き Formula にこのブログ用のインテグレーションキーの権限を追加してやり直しました。今度はうまくいったようです。

irb(main):005> ltp = page.append_block_children LinkToPageBlock.new(page_id: "fbafcd96e1cc4f3982d914931af4969b")
=> NotionRubyMapping::LinkToPageBlock-da879faa4d264ed19c0fcff21d3b3b49

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

Link to page block

LinkToPageBlock という名前ですが、database_id キーワードでデータベースのリンクも保持できます。

irb(main):006> dtp = page.append_block_children LinkToPageBlock.new(database_id: "f50fe9be119c41d1b2e0b99bbab471a8")
=> NotionRubyMapping::LinkToPageBlock-2acc8b24ab9c4225a82b5268bd95afec

以下のようにデータベースへのリンクも追加されました。

Link to dataabse block

おわりに

今回は単なる Block の子クラスである LinkToPageBlock を解説してみました。今日も外出していたので記事は短めです。すみません。

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

hkob.notion.site

NotionRubyMapping解説