Notion API 活用術 改訂作業(13) : hkob の雑記録 (353)

はじめに

hkob の雑記録の第353回目は、プロパティ要素の Property object と Property schema object について改訂していきます。本記事は2025年ユカスタマスの19日目(2023年ユカスタマスの750日目)の記事になります。

データベース → データソースへの変更

データソースが分離するまでは、プロパティはデータベースが持っていました。2025年9月のアップデートにより、データベースは単なるコンテナとなり、プロパティはデータソースが持つようになりました。実際に Property object の説明ページを見ると、以下のように Data source properties となっています。このため、データベースと書かれている部分については、すべてデータソースへの変更をしておきます。

Data source properties

P.80 Property object / Property schema object

Property object や Property schema object は DataSource から取得するように変更されています。JSON を取得する部分でも DataSource.find で取得したデータソースから JSON データを確認していきます。

# プロパティ確認用データソースを取得
ds = DataSource.find "プロパティ確認用データソースの ID"
=> NotionRubyMapping::DataSource-2bcd8e4e98ab8161b04c000bdf67e0dd

# データソースプロパティが含まれた Ruby オブジェクト (Property object 確認用)
dps = ds.json["properties"]
=>
{"日付" =>
...

dps の名前自体は変わらないので、この後はしばらく変更はありません。この先 P.81 では設定値が存在しないプロパティ一覧の表があります。ここには、初版出版後に追加されたボタン (button)、 場所 (place) 、有効期限 (verification) を追加しています。

プロパティ プロパティの型
ボタン button
作成者 created_by
作成日時 created_time
日付 date
メール email
ファイル&メディア files
最終更新者 last_edited_by
最終更新日時 last_edited_time
ユーザー people
電話 phone_number
場所 place
テキスト rich_text
ステータス status
タイトル title
URL url
有効期限 verification

これ以外のプロパティの解説は変更がありませんが、リレーションについては接続先がデータベースからデータソースに変更になるため、data_source_id についての記載を追加しました。この時、これまでの database_id を置き換えるのではなく、data_source_id が追加される形になっています。

print JSON.pretty_generate(dps.slice "片方向リレーション先")
{
  "片方向リレーション先": {
    "id": "dQd%7B",
    "name": "片方向リレーション先",
    "type": "relation",
    "relation": {
      "database_id": "2bcd8e4e-98ab-8157-8b89-c6bc1d388a44",
      "data_source_id": "2bcd8e4e-98ab-81c7-a599-000b85efd9ad",
      "type": "single_property",
      "single_property": {
      }
    }
  }
}=> nil
print JSON.pretty_generate(dps.slice "双方向リレーション先")
{
  "双方向リレーション先": {
    "id": "%7DO%3D%7D",
    "name": "双方向リレーション先",
    "type": "relation",
    "relation": {
      "database_id": "2bcd8e4e-98ab-8192-abbb-ef444a9aa42f",
      "data_source_id": "2bcd8e4e-98ab-819d-ba17-000b2390ab72",
      "type": "dual_property",
      "dual_property": {
        "synced_property_name": "プロパティ確認用",
        "synced_property_id": "P%5Dde"
      }
    }
  }
}=> nil

ID property の追加

設定値が存在する新しいプロパティとして ID があります。ここについては以下のように文章を追加しました。

ID の型は "unique_id" となります。 "unique_id" キーオブジェクトには、 "prefix" キー値のみが含まれます。この例では prefix を設定していなかったので、null が入っています。

print JSON.pretty_generate(dps.slice "ID")
{
  "ID": {
    "id": "xl%7CF",
    "name": "ID",
    "description": null,
    "type": "unique_id",
    "unique_id": {
      "prefix": null
    }
  }
}=> nil

Property schema object は "unique_id" キーオブジェクトだけが格納されます。

{
  "ID": {
    "unique_id": {
      "prefix": "TASK"
    }
  }
}

おわりに

今回は、プロパティ要素のうち Property object と Property schema object の修正について解説しました。基本的にデータベースからデータソースへの変更と、初版から追加されたプロパティの解説を記載しました。

hkob.notion.site