Synced Block, Link to Page と Template block types が API でサポートされた

開示?
開示?
原題
Synced Block, Link to Page and Template block types are now supported in the API
日付
Nov 18, 2021
Number
35
前のリリース日(最新)
リリース間隔(日)
作成日
Nov 18, 2021 01:19 AM
次のリリース
タグ
ADDED
経過日数
synced_block, link_to_pagetemplate のブロックタイプが 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_blocksynced_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

💡
重要な注意事項
  1. ボットは元のブロックと参照の同期ブロックの両方にアクセスできる必要がある
  1. 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