저번에 왔던 찬찬이 죽지도 않고 또 왔네
이번에 새로 생긴 기능 Sync Block 에 관해서 연재하려고 왔습니다.
마우스 오버를 하면 연하게 적색 상자가 포커스 되어 보이는데, 이 블럭이 sync block 입니다. 그럼 이 블럭이 어떤 형태로 되어 있는지 조회해볼까요?
search
에서 filter={"property": "object", "value": "page"}
로 걸어서 sync block 을 가지고 있는 page
를 찾은 후 해당 page_id
를 변수에 넣기 (search
는 API 집중분석 08, 09 참조)page_id
로 blocks.children.list
를 호출하여 sync block 이 있는 block
정보를 들여다 보기 (blocks.children.list
는 API 집중분석 15 참조)한번 예시를 보겠습니다.
{'archived': False,
'created_by': {'id': 'edfacc72-eb15-467b-9fdb-d5b656e1c77b',
'object': 'user'},
'created_time': '2022-08-03T02:48:00.000Z',
'has_children': True,
'id': '741f841e-1fa3-412b-929c-00000000000',
'last_edited_by': {'id': 'edfacc72-eb15-467b-9fdb-d5b656e1c77b',
'object': 'user'},
'last_edited_time': '2022-08-03T02:48:00.000Z',
'object': 'block',
'parent': {'page_id': '65f095e3-1027-4589-a504-3d3359b6c20f',
'type': 'page_id'},
'synced_block': {'synced_from': None},
'type': 'synced_block'}
'type'
이 'synced_block'
으로 되어 있네요. 이런 경우는 어떻게 조회해야 될까요?
눈치 빠르신 분은 아셨겠지만, 'has_children'
이 True
로 되어 있다는 걸 보셨을 겁니다.
이 block_id
를 page_id
로 삼아서 blocks.children.list
로 호출하시면 보실 수 있습니다.
잠깐.. 그런데 어떤 블록에서는 다음과 같이 보입니다.
{'archived': False,
'created_by': {'id': 'edfacc72-eb15-467b-9fdb-d5b656e1c77b',
'object': 'user'},
'created_time': '2022-08-03T02:49:00.000Z',
'has_children': True,
'id': '2beb9496-1372-4e4d-a7c3-b7c497ab7b9b',
'last_edited_by': {'id': 'edfacc72-eb15-467b-9fdb-d5b656e1c77b',
'object': 'user'},
'last_edited_time': '2022-08-03T02:49:00.000Z',
'object': 'block',
'parent': {'page_id': 'ef086465-015e-4be9-8911-83000865637e',
'type': 'page_id'},
'synced_block': {'synced_from': {'block_id': '741f841e-1fa3-412b-929c-00000000000',
'type': 'block_id'}},
'type': 'synced_block'}
위 블록같은 경우, 'synced_block'
에 'block_id'
정보가 있네요. 도대체 무슨 차이이죠?
'synced_block'
에 'synced_from'
이 None
일 경우, 내가 원본이다 라는 뜻이고, block_id
가 있다는 건 나는 사본이고 원본은 따로 있는데, 원본 아이디는 요거(block_id
)다 라는 뜻입니다
자세히 보시면 'synced_from'
의 'block_id'
와 이전 블록의 'id'
가 동일하다는 것을 발견하실 수 있습니다.
'id': '741f841e-1fa3-412b-929c-00000000000'
'block_id': '741f841e-1fa3-412b-929c-00000000000'
그럼 이제 id를 sync_block_id 변수에 넣어보겠습니다.
sync_block_id = '741f841e-1fa3-412b-929c-00000000000'
이제 blocks.children.list
를 호출해볼까요?
(객체 이름이 notion
일 경우)
sync_blocks = notion.blocks.children.list(block_id=sync_block_id)
pprint(sync_blocks)
sync block 내에 block
묶음들이 쭉 보여집니다.
{'block': {},
'has_more': False,
'next_cursor': None,
'object': 'list',
'results': [{'archived': False,
'created_by': {'id': 'edfacc72-eb15-467b-9fdb-d5b656e1c77b',
'object': 'user'},
....
마찬가지로 'has_more'
가 True
일 경우, 'start_cursor'
에 'next_cursor'
값을 parameter
에 입력하여 호출하시면 됩니다. 역시 묶음개수 또한 page_size
로 지정하여 한 번에 호출 할 수 있는 값을 지정할 수 있습니다.
next_cursor = sync_blocks['next_cursor']
notion.blocks.children.list(block_id=sync_block_id, start_cursor=next_cursor, page_size=20)
24화를 끝으로 API 정복기를 마무리 지으려고 합니다.
그동안 연재 시리즈를 마감하려고 하니 홀가분 하네요. 즐거운 노션 생활 되시길 바라며 이상 찬찬의 Notion API 정복기의 찬찬이었습니다.
감사합니다.