我需要使用 Notion API 在 Notion 数据库中创建一个现有页面的子页面(子项目)。我使用 Python 进行 API 调用。
我尝试按照 API 文档中的描述进行 create page API 调用,但是 - 即使 Notion API 用“200 OK”代码回答 - 我只能将该页面视为预先存在的“父”页面的子页面在我的概念视图中打开最后一个页面时,但我在用来浏览数据库的概念视图的表中看不到该页面作为子页面(子项目)。
相反,我只能通过打开“父”页面并查看底部来看到新创建的页面:
我正在寻找一种方法,使这些子页面在我的层次结构中可见,就像第一张图片中显示的那样。
我已经尝试执行更新页面 API 调用来更改父页面的
Sub item
属性或子页面的 Parent item
属性,但即使 API 调用正确(使用 200 OK 代码响应) ,这些属性保持不变...并且没有条目添加到子项目/父项目的数组中。
下面我报告了我在
update page
API 调用中使用的有效负载示例,以更新试图将其链接到父页面的新创建页面的 Parent item
属性:
{
'properties': {
'Parent item': {
'relation': [{
'id': '110a8a775e2a806dbc41c21dc16bfbda'
}]
}
}
}
这是我在上次请求后收到的回复;正如您所看到的,没有添加“父项”属性...
{
"object": "page",
"id": "130a8a77-5e2a-816a-80ab-cf958857b90c",
"created_time": "2024-10-31T19:34:00.000Z",
"last_edited_time": "2024-10-31T23:39:00.000Z",
"created_by": {
"object": "user",
"id": "ab191a0a-ec55-4169-9601-e4e073adc04a"
},
"last_edited_by": {
"object": "user",
"id": "ab191a0a-ec55-4169-9601-e4e073adc04a"
},
"cover": null,
"icon": {
"type": "emoji",
"emoji": "🗓️"
},
"parent": {
"type": "page_id",
"page_id": "110a8a77-5e2a-806d-bc41-c21dc16bfbda"
},
"archived": false,
"in_trash": false,
"properties": {
"title": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "28/10/202403/11/2024",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "28/10/202403/11/2024",
"href": null
}
]
}
},
"url": "https://www.notion.so/28-10-202403-11-2024-130a8a775e2a816a80abcf958857b90c",
"public_url": null,
"request_id": "1701b627-9b65-400d-b5da-5d7460ef2dc5"
}
它仅包含
parent
属性内的父页面 id,但此属性似乎不足以使页面在我之前展示的数据库层次结构中作为子页面/子项目可见。
我的问题似乎与this有关,但那个问题还没有得到答案...
有人知道为什么会发生这种行为并可以帮助我吗?
我已经找到解决方案了。
似乎要获得具有我在图片中显示的层次结构的数据库,所有页面都必须具有数据库本身的
parent
属性,然后通过 Parent item
属性链接到其“父页面”。
因此,在执行 create page API 调用时,我们需要将(对于新创建的页面)新创建页面的
database_id
键设置为整个数据库的 id
,并将 Parent item
设置为我们想要作为新创建页面的“父页面”的页面的id
。
因此,创建页面请求 API 调用的主体(有效负载)必须如下所示:
{
"parent": {
"type": "database_id",
"database_id": "baf6313070a14314a420b8160e062880"
}
"properties": {
"Parent item": {
"relation": [
{
"id": "110a8a77-5e2a-806d-bc41-c21dc16bfbda" #Id of the "parent page"
}
]
}
}
我认为在这种情况下文档可能有点误导,因为阅读 create page API 调用文档。似乎将我们请求的
parent
参数设置为“父页面”id 以将新创建的页面链接到具有该 id 的页面并获得这样的层次结构就足够/正确了,但实际上并非如此。