⛳
NotionのデータベースアイテムのURL一覧を出力する方法
概要
データベースの各アイテムのURLをcURLとjqで出力する方法です。
シェル芸人ではなく、カーソルの処理が手動なのはご勘弁ください
(Notionのチャンピオンコミュニティで回答したものの焼き回しです。なんとなくもったいなかったのでメモですw)
参照ドキュメント
- Notion API Reference
- とほほのjq入門
実装
リファレンスを見ると、APIで1度に取得可能な最大件数は100件でしたので、100件ずつ取得しカーソルの値を書き換えながら出力していく形で実装しました。
また、jqでは .キー名
でJSONの値を取得でき、 カンマで複数要素取得できるようだったので、URLと次のカーソルの値を取得し出力するようにしました。
初回の実行
実行コマンド
curl -X POST 'https://api.notion.com/v1/databases/データベースID/query' \
-H 'Authorization: Bearer '"APIトークン"'' \
-H 'Notion-Version: 2022-06-28' \
-H "Content-Type: application/json" \
--data '{"page_size": 100}' \
| jq '.results[].url, .next_cursor' >> notion_db_item_list.txt
出力内容
"https://www.notion.so/xxxx"
"https://www.notion.so/xxxx"
"https://www.notion.so/xxxx"
... 100件分
次のコマンドで使うカーソルの値
次の100件取得
出力で得られたカーソルの値をリクエストボディに含めてコマンドを実行します
curl -X POST 'https://api.notion.com/v1/databases/データベースID/query' \
-H 'Authorization: Bearer '"APIトークン"'' \
-H 'Notion-Version: 2022-06-28' \
-H "Content-Type: application/json" \
--data '{"page_size": 10, "start_cursor": "前のコマンドで出力された次回指定のパラメータ"}' \
| jq '.results[].url, .next_cursor' >> notion_db_item_list.txt
以降は次回のカーソルが取得できなくなるまで繰り返しになります。
今回件数が少なかったので、手作業で実施しましたが、GASなどで処理を書いたほうが良いかもしれません。
Discussion