
NotionAPIの使い心地を試してみました
最近Notionを使い始めましたが、何に使うか色々模索しています。。
Notionについて色々調べている中、NotionAPIがあるらしいので、さっそくNotionAPIを使用してみることにしました!
この記事では、NotionAPIをリクエストするまでの手順について説明していきます。
NotionAPIリクエストするまでの流れ
NotionAPIをリクエストするまでの流れは、以下の図のようなイメージで、事前設定含めても、少ないステップでAPIリクエストできましたので、思ったより簡単にできました!

1.インテグレーションを作成
以下のステップでインテグレーションを作成していきます。
1.Notionのインテグレーション設定画面へ遷移する
2.インテグレーション画面にて、「新しいインテグレーション」を押下
3.インテグレーション登録画面にて、名前は適当に設定し、送信ボタンを押下
4.インテグレーションが発行され、APIリクエストに必要なシークレットキーが発行されます。
2.インテグレーションと特定のページをコネクトする
API経由でアクセスさせて良いページに対し、さきほど発行したインテグレーションを紐付けます。(コネクトします)
1.新規ページを作成し、「データベースフルページ」を作成します。
2.ページ右上の3点リーダーから、「コネクト」「接続先」から、さきほど作成したインテグレーションを選択します。
これで準備完了です、シンプルで簡単ですね!
3.APIリクエストする
APIリクエストは、Curlコマンドでリクエストしていきたいと思います。
Curlコマンド作成はChatGPTにやってもらおうと思い、ついでにリクエストURLも教えてもらおうかと思います!
度々仕様が変わるAPIは、ChatGPTで正しい回答を得られない場合もありますが、一旦やってみます。
3-1.プロンプト(エンドポイント一覧を教えてもらう)
Notion APIのエンドポイント一覧を教えて
3-2.ChatGPTからの回答
Notion APIは、さまざまな操作を実行するためのさまざまなエンドポイントを提供しています。以下は、一般的な操作に使用される主なエンドポイントの一覧です。
ページ: Notionのページを作成、読み取り、更新、削除するためのエンドポイントです。
/pages: ページの一覧を取得します。
/pages/{page_id}: 特定のページの詳細を取得します。
/pages/{page_id}/blocks: ページ内のブロックの一覧を取得します。
データベース: Notionのデータベースを作成、読み取り、更新、削除するためのエンドポイントです。
/databases: データベースの一覧を取得します。
/databases/{database_id}: 特定のデータベースの詳細を取得します。
/databases/{database_id}/query: データベース内のエントリをクエリします。
ブロック: Notionのブロックを作成、読み取り、更新、削除するためのエンドポイントです。
/blocks/{block_id}: 特定のブロックの詳細を取得します。
/blocks/{block_id}/children: ブロックの子要素の一覧を取得します。
ユーザー: Notionのユーザー情報を取得するためのエンドポイントです。
/users: ユーザーの一覧を取得します。
/users/{user_id}: 特定のユーザーの詳細を取得します。
これらのエンドポイントは、Notion内のデータや機能にアクセスするための基本的な手段を提供しています。特定の操作に応じて、該当するエンドポイントを選択して使用します。APIのドキュメントやリファレンスを参照することで、より詳細な情報を入手できます。
3-3.プロンプト(Curlコマンドを教えてもらう)
NotionAPIのCURLコマンドを教えて
リクエストURL
/databases/{database_id}/query
バージョン
2022-06-28
3-4.ChatGPTからの回答
Notion APIの /databases/{database_id}/query エンドポイントを使用してデータベース内のエントリをクエリするCURLコマンドは次のようになります。
curl -X POST https://api.notion.com/v1/databases/{database_id}/query \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN_HERE" \
-H "Content-Type: application/json" \
-H "Notion-Version: 2022-06-28" \
-d '{"filter": {"property": "title", "text": {"equals": "Your Title"}}}'
このコマンドでは、{database_id} は対象のデータベースのIDに置き換えてください。また、YOUR_ACCESS_TOKEN_HERE は、実際のアクセストークンに置き換えてください。
このコマンドは、指定されたデータベースのエントリをクエリし、title プロパティが指定したタイトルと一致するエントリを取得します。必要に応じて、クエリを変更して、より複雑なフィルタリングや検索を行うことができます。
3-5.Curlコマンドを自分用に修正する
提示されたCurlコマンドのリクエスト内容は、合っていましたのでこちらをベースにリクエストしていきたいと思います。
上記Curlコマンドを自分用に修正していきます。
curl -X POST https://api.notion.com/v1/databases/{database_id}/query \
-H "Authorization: Bearer {YOUR_ACCESS_TOKEN_HERE}" \
-H "Content-Type: application/json" \
-H "Notion-Version: 2022-06-28" \
「database_id」は、ステップ2で新規ページの以下URL箇所
https://www.notion.so/{database_id}?v=xxxxxx
「YOUR_ACCESS_TOKEN_HERE」は、インテグレーション画面にて発行されたシークレット。
filterオプションは、今回不要のため削除
3-6.リクエスト対象とするページ
リクエスト対象とするページは以下のようなページとなり、以下の情報を参照するAPIをリクエストしていきます。

3-7.起動結果(レスポンスが長かったので一部抜粋)
"properties": {
"ステータス": {
"id": "xxxxxx",
"type": "status",
"status": {
"id": "xxxxxxxxxxxx",
"name": "未着手",
"color": "default"
}
},
"タグ": {
"id": "xxxxx",
"type": "multi_select",
"multi_select": []
},
"メモ": {
"id": "ntjb",
"type": "rich_text",
"rich_text": [
{
"type": "text",
"text": {
"content": "あああ",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "あああ",
"href": null
}
]
},
"タスク": {
"id": "title",
"type": "title",
"title": [
{
"type": "text",
"text": {
"content": "Notion APIをやる",
"link": null
},
"annotations": {
"bold": false,
"italic": false,
"strikethrough": false,
"underline": false,
"code": false,
"color": "default"
},
"plain_text": "Notion APIをやる",
"href": null
}
]
}
},
おわりに
最後まで読んで頂き、ありがとうございます!
かなり簡単にAPIリクエストできました!スムーズにリクエストが成功すると嬉しくなりますね!
Notionは初心者で、まだ使いこなしていないレベルですが、APIを使用することで、別媒体からNotion側に反映したり、Notionでまとめたものを別媒体に反映できるので、今後もNotionAPIを色々試してみたいと思います!