Notion APIで、Relationプロパティへのデータ登録と取得、Rollupプロパティのデータ取得をやりたくて調べたメモです。
前提
Notionで、データベース、Relation、Rollupを作る工程は省略します。
ググるとたくさん出てくるのでそちらをご覧ください。
Relationする側、される側、それぞれのデータベースは、それぞれでAPIのIntegrationを招待しておく必要があります。
Relationプロパティへのデータ登録
・エンドポイント、ヘッダ
{SECRET_KEY}の部分は、ご自分の環境のシークレットキーを入れてください。
その際、{}ごと差し替えることに注意してください。
◯Bearer secret_XXXXXXXXXXXX
×Bearer {secret_XXXXXXXXXXXX}

・送信データ(全文)
“Column”がRelationプロパティです。
Relationデータを登録するときは、Relation対象のデータベース(テーブル)のページID(レコード)をJSONオブジェクト形式で複数指定することができます。
ページIDは、ハイフンをつけたUUIDv4形式で入れることに注意してください。DATABASE_IDは、ハイフンなしでもいけるようですが、ページIDは違うようでハイフンがないと動きませんでした。
"parent": {
"database_id": "{DATABASE_ID}"
},
"properties": {
"name": {
"title": [
{
"text": {
"content": "+"
}
}
]
},
"count": {
"number": 1
},
# ここからRelationプロパティへのデータ登録
"Column": {
"relation": [
{
"id": "d2e3b93c-db87-4353-8d58-b4f80c82c9b2"
}
]
}
# ここまでRelationプロパティへのデータ登録
}
}
・受信データ(抜粋)
IDがついて登録結果が返ってきます。
"Column": {
"id": "if`\",
"type": "relation",
"relation": [
{
"id": "d2e3b93c-db87-4353-8d58-b4f80c82c9b2"
}
],
},
Relationプロパティ、Rollupプロパティのデータ取得
・エンドポイント、ヘッダ

・送信データ
なし
・受信データ(抜粋)/Relationデータ
登録時と同じフォーマットで取得できます。
Relation対象が複数ある場合は配列の要素数が増えます。
Rollupデータを取得する場合、受信データサイズ減らすためにこのRelationデータは不要としたいのですが、プロパティ指定でページ情報を取得する方法がわからないので出来ません。今後の課題です。
誰かご存知でしたら教えて欲しいです。
"Related to 来期アニメふぁぼ (Column)": {
"id": "ZkP",
"type": "relation",
"relation": [
{
"id": "d282a61c-e5ee-477a-8739-40fb353879c8"
}
],
},
・受信データ(抜粋)/Rollupデータ
こんな感じで結果が返ります。
CALCULATEは「Sum」で設定しています。まぁ予想通りです。
"count_total": {
"id": "Fl~|",
"type": "rollup",
"rollup": {
"type": "number",
"number": 3
}
},
間違いなどありましたら教えていただけると助かります。
◆参考にしたページ


◆自作アプリ
コメント