はじめに
hkob の雑記録の第343回目は、Section-010 の ブロック要素の分類から Page object までの修正を行なっていきます。本記事は2025年ユカスタマスの9日目(2023年ユカスタマスの740日目)の記事になります。
P.50 ブロック要素の分類
ブロック要素の分類では、以下のように「ブロック要素の関係」の図を大きく変更しました。この図は ELK layout でも崩壊しなかったので、このままにしています。初版との違いは、Database の下に DataSource を挿入したことです。2025年9月の更新により、データベースはデータソースを入れるコンテナとしての役割のみとなっています。特に一つのデータベースに複数のデータソースが含まれることを図で説明しています。

本文では、「データソース」のキーワードを追加して 4 つの要素としています。また、「データベースの中にたくさんの子供のページを持つことができます。」となっていた部分を「データベースの中に一つ以上のデータソースを持つことができます。さらにそのデータソースの中にたくさんの子供のページを持つことができます。」と変更しました。
Page object
ここでは、最初に取得した Page の URL を修正しています。初版の頃には末尾が page_id で終わっていたのですが、最近はリンクを取得すると ?source=copy_link が入るようになっています。
https://www.notion.so/hkob/2bcd8e4e98ab81e883b6ff10b6cd88e8?source=copy_link
最初の単体ページを取得したときの JSON は以下のようになりました。初版の時と異なるのは、in_trash, is_locked, public_url そして request_id が付与されていることです。
page = Page.find "コピーしたリンクをここに貼り付け" => NotionRubyMapping::Page-2bcd8e4e98ab81e883b6ff10b6cd88e8 print JSON.pretty_generate(page.json) { "object": "page", "id": "2bcd8e4e-98ab-81e8-83b6-ff10b6cd88e8", "created_time": "2025-12-01T11:54:00.000Z", "last_edited_time": "2022-12-29T05:41:00.000Z", "created_by": { "object": "user", "id": "2200a911-6a96-44bb-bd38-6bfb1e01b9f6" }, "last_edited_by": { "object": "user", "id": "2200a911-6a96-44bb-bd38-6bfb1e01b9f6" }, "cover": null, "icon": { "type": "emoji", "emoji": "1️⃣" }, "parent": { "type": "page_id", "page_id": "2bcd8e4e-98ab-810e-9ec0-e5316edb8aec" }, "archived": false, "in_trash": false, "is_locked": false, "properties": { "title": { "id": "title", "type": "title", "title": [ { "type": "text", "text": { "content": "単体ページサンプル", "link": null }, "annotations": { "bold": false, "italic": false, "strikethrough": false, "underline": false, "code": false, "color": "default" }, "plain_text": "単体ページサンプル", "href": null } ] } }, "url": "https://www.notion.so/2bcd8e4e98ab81e883b6ff10b6cd88e8", "public_url": "https://hkob.notion.site/2bcd8e4e98ab81e883b6ff10b6cd88e8", "request_id": "d9193198-8f24-4a6f-b80e-d6ce5ca048b0" }=> nil
初版では次にデータベースに所属するページを取得しています。前述したようにデータベースは単なるコンテナになったため、ここでは「データベース」ではなく「データソース」に変更しました。こちらも JSON はこのようになりました。
page = Page.find "コピーしたリンクをここに貼り付け" => NotionRubyMapping::Page-2bcd8e4e98ab81c5963cdbc38ea9d93f print JSON.pretty_generate(page.json) { (中略) "parent": { "type": "data_source_id", "data_source_id": "2bcd8e4e-98ab-8127-a7e7-000b1ca841bd", "database_id": "2bcd8e4e-98ab-813a-8b68-cfec895adc46" }, (中略) "properties": { "タグ": { "id": "mkN%5D", "type": "select", "select": { "id": "eda78983-0fde-413c-a2cd-9386ceb29da1", "name": "タグ1", "color": "pink" } }, "名前": { "id": "title", "type": "title", "title": [ (中略) ] } }, (中略) }=> nil
これに対応して説明書きも以下のように変更しました。
「Parent object の "type" が "data_source_id"となっており、 "data_source_id"キー値に親となるデータソースの ID が格納されています。また、参考情報としてなのかデータソースの親であるデータベースの ID も database_id として格納されています。」
おわりに
とりあえず Page object まで修正しました。初版では次に Database object を説明していますが、今回取得した親を取得する流れとなっているので、DataSource object を先に説明します。内容はほぼ現在の Database object と同一になるはずです。そのあとで、DataSource object の親として Database object の節を追加することにします。
https://hkob.notion.site/hkob-16dd8e4e98ab807cbe3cf3cc94cdfe0f?pvs=4