synced_block
, link_to_page
と template
のブロックタイプが API でサポートされた。以下、実際に試してみる。Synced block
ChangeLog 内の説明
UI と同じで、二つの
synced_block
が存在する。-- 最初のものはオリジナルでこれは同期しない。参照ブロックはオリジナルの synced_block に同期する。Original Synced Block
synced_block
を作るために、開発者はオリジナルの synced block を作る必要がある。開発者は synced_from
が設定されていない(null
にセットされている)ことを確認することで、それがオリジナルかどうかを確認することができる。検証
ChangeLog にあったサンプルをこのページに追加してみる。コードはこんな感じ。
#!/bin/sh curl -X PATCH 'https://api.notion.com/v1/blocks/c322dfe679bc4d68b50e1cf544f064ac/children' \ -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \ -H "Content-Type: application/json" \ -H "Notion-Version: 2021-08-16" \ --data '{ "children": [ { "type": "synced_block", "synced_block": { "synced_from": null, "children": [ { "callout": { "text": [ { "type": "text", "text": { "content": "Synced block 内の Callout" } } ] } } ] } } ] }'
返ってきた JSON はこちら。synced_from が null の synced_block が生成されている。has_children が true になっているので、この id で block children を取得すれば、上の callout が入っていると思う。
{ "object": "list", "results": [ { "object": "block", "id": "d3137469-5cd5-4372-9e39-10183c6dd028", "created_time": "2021-11-18T01:36:00.000Z", "last_edited_time": "2021-11-18T01:36:00.000Z", "has_children": true, "archived": false, "type": "synced_block", "synced_block": { "synced_from": null } } ], "next_cursor": null, "has_more": false }
作成されたオリジナルの synced block はこれ。
Synced block 内の Callout
ChangeLog 内の説明
Reference Synced Blocks
オリジナル
synced_block
を他の synced_block
と同期するには、開発者は単に synced_block
を synced_from
プロパティを使って参照すればよい。検証
説明通りにsynced_from に block_id を設定する。先ほどの JSON に先ほど作成した synced block の id が入っているので、それを設定すればよい。
#!/bin/sh curl -X PATCH 'https://api.notion.com/v1/blocks/c322dfe679bc4d68b50e1cf544f064ac/children' \ -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \ -H "Content-Type: application/json" \ -H "Notion-Version: 2021-08-16" \ --data '{ "children": [ { "type": "synced_block", "synced_block": { "synced_from": { "block_id": "d3137469-5cd5-4372-9e39-10183c6dd028" } } } ] }'
返ってきた JSON はこんな感じ。synced_from に block_id が設定されています。上のスクリプトには子供を設定していないが、同期しているため has_children が設定されている。
{ "object": "list", "results": [ { "object": "block", "id": "b329ea36-e5a6-41ab-8e2c-d49af1f14ab5", "created_time": "2021-11-18T04:51:00.000Z", "last_edited_time": "2021-11-18T04:51:00.000Z", "has_children": true, "archived": false, "type": "synced_block", "synced_block": { "synced_from": { "type": "block_id", "block_id": "d3137469-5cd5-4372-9e39-10183c6dd028" } } } ], "next_cursor": null, "has_more": false }
作成された参照の synced block はこれ。見た目ではどちらかはわからない。
Synced block 内の Callout
重要な注意事項
- ボットは元のブロックと参照の同期ブロックの両方にアクセスできる必要がある
- UIと同様に、現時点では
synced_from
の変更はサポートしていない
Link to page
ChangeLog 内の説明
link_to_page
ブロックタイプもサポートした。このブロックタイプを使うことで、開発者は page_id
プロパティにより他ページへのリンクを、 database_id
によりフルページデータベースへのリンクを作成することができる。検証
Synced block と同じように Linked page を追加してみた。特に難しいことはない。
#!/bin/sh curl -X PATCH 'https://api.notion.com/v1/blocks/c322dfe679bc4d68b50e1cf544f064ac/children' \ -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \ -H "Content-Type: application/json" \ -H "Notion-Version: 2021-08-16" \ --data '{ "children": [ { "type": "link_to_page", "link_to_page": { "type": "page_id", "page_id": "6a8efd665f694b3996c3089f680003e0" } } ] }'
作成されたリンクはこちら。
Notion API Changelog まとめTemplate block
ChangeLog 内の説明
template
ブロックタイプの追加と取得のサポートを追加しました。このブロックタイプを使用して、開発者は子ブロックを複製するテンプレートを作成できるようになりました。検証
template は説明テキストとテンプレート中身が必要となる。テンプレートの中身は children の中に記述すればよい。スクリプトはこんな感じになる。
#!/bin/sh curl -X PATCH 'https://api.notion.com/v1/blocks/c322dfe679bc4d68b50e1cf544f064ac/children' \ -H 'Authorization: Bearer '"$NOTION_API_KEY"'' \ -H "Content-Type: application/json" \ -H "Notion-Version: 2021-08-16" \ --data '{ "children": [ { "type": "template", "template": { "text": [ { "type": "text", "text": { "content": "Callout 作成テンプレート" } } ], "children": [ { "callout": { "text": [ { "type": "text", "text": { "content": "サンプルテキスト" } } ] } } ] } } ] }'
返却された JSON はこのようになった。
{ "object": "list", "results": [ { "object": "block", "id": "47902383-cda1-4e9d-a3a1-b5f98d2097d1", "created_time": "2021-11-18T05:35:00.000Z", "last_edited_time": "2021-11-18T05:35:00.000Z", "has_children": true, "archived": false, "type": "template", "template": { "text": [ { "type": "text", "text": { "content": "Callout 作成テンプレート", "link": null }, "annotations": { "bold": false, "italic": false, "strikethrough": false, "underline": false, "code": false, "color": "default" }, "plain_text": "Callout 作成テンプレート", "href": null } ] } } ], "next_cursor": null, "has_more": false }
スクリプトで作成されたテンプレートはこちら。
Notion API Changelog まとめ
Synced block 内の Callout