Notion API でブロックが取得・更新できるようになった。PATCH
コマンドで更新できるのは、現在、paragraph
, heading_1
, heading_2
, heading_3
, bulleted_list_item
, numbered_list_item
, toggle
, to_do
のブロックとのこと。
テスト用に以下のブロックを用意した。ここには箇条書きがあり、「変更前のブロック」という文字が書いておいた。このブロックの URL を取得すると[<https://www.notion.so/hkob/GET-PATCH-132b1776fa484432acc67b50ae6c0ef3#bb78a5a99a964fbebf5a6655a10a6516>](<https://www.notion.so/GET-PATCH-132b1776fa484432acc67b50ae6c0ef3>)
となる。後ろのbb78から始まる部分がブロック id になるので、これを使って検証する。
Retrieve a Block 機能を使うと、 ブロックオブジェクトが取得できる。
#!/bin/sh
curl '<https://api.notion.com/v1/blocks/bb78a5a99a964fbebf5a6655a10a6516>' \\
-H 'Authorization: Bearer '"$NOTION_API_KEY"'' \\
-H 'Notion-Version: 2021-08-16'
取得したブロックはこちら。箇条書きなので「bulleted_list_item」になっていることがわかる。
{
"object": "block",
"id": "bb78a5a9-9a96-4fbe-bf5a-6655a10a6516",
"created_time": "2021-11-10T03:11:00.000Z",
"last_edited_time": "2021-11-10T03:11:00.000Z",
"has_children": false,
"archived": false,
"type": "bulleted_list_item",
"bulleted_list_item": {
"text": [
{
"type": "text",
"text": {
"content": "変更前のブロック",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "変更前のブロック",
"href": null
}
]
}
}
新しい PATCH
/v1/blocks/:id
を使うと、更新した ブロックオブジェクト が返却される。詳細については、こちらに記載されている。→ Update a Block
文字だけの変更だけだと面白くないので、太字にして文字色を赤にしてみた。
#!/bin/sh
curl <https://api.notion.com/v1/blocks/bb78a5a99a964fbebf5a6655a10a6516\\>
-H 'Authorization: Bearer '"$NOTION_API_KEY"'' \\
-H "Content-Type: application/json" \\
-H "Notion-Version: 2021-08-16" \\
-X PATCH \\
--data '{
"bulleted_list_item": {
"text": [{
"text": { "content": "変更後のブロック" },
"annotations": { "bold": true, "color": "red" }
}]
}
}'
返却された JSON データをみると、確かに内容が変更されているのがわかる。上に用意したブロックもちゃんと太字になり、文字色も赤く変わっている。
{
"object": "block",
"id": "bb78a5a9-9a96-4fbe-bf5a-6655a10a6516",
"created_time": "2021-11-10T03:11:00.000Z",
"last_edited_time": "2021-11-10T03:34:00.000Z",
"has_children": false,
"archived": false,
"type": "bulleted_list_item",
"bulleted_list_item": {
"text": [
{
"type": "text",
"text": {
"content": "変更後のブロック",
"link": null
},
"annotations": {
"bold": true,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "red"
},
"plain_text": "変更後のブロック",
"href": null
}
]
}
}