Open8
Notion APIを使ってみたメモ
とりあえず、Notionのデータベースにアクセスできるところまでやってみる。
環境
- Notion API Version : 2022-02-22
公式ドキュメント
以下のURLにアクセスして APIを使えるようにする。
- Create new integration
- Nameは適当な名前、適当なロゴ、関連付けるワークスペースを確認、あとはそのまま
- Integrationが作成されたら
Secrets
をメモしておく
データベースにAPIがアクセスできるように設定する。
- 適当なデータベースを作る
- データベースのページで
Share
->Invite
- 先で作成したIntegrationが表示されているので選択してInviteする
Privateなページでも使えるのはイイネ
データベースIDを確認する。
URLの{database_id}
部分 (UUIDv4)
https://www.notion.so/{workspace}/{database_id}?v={view_id}
対象データベースの情報を取得する。
GET https://api.notion.com/v1/databases/{database_id}
ヘッダ
{Secret}
にはIntagrationでメモしたSecretを設定する。
Name | Value |
---|---|
Authorization | Bearer {Secret} |
Notion-Version | 2022-02-22 |
正常に処理されると、データベースの情報がJSONで返される。
レスポンス
Notion APIを使いたくなる主なユースケースは、何かのトリガーでNotionのデータベースにレコードを追加したいってことが多い気がするので、まずは追加を試してみる。
以下のようなデータベースがあることを想定。
API
POST https://api.notion.com/v1/pages
ヘッダ
Name | Value |
---|---|
Authorization | Bearer {Secret} |
Notion-Version | 2022-02-22 |
Content-Type | application/json |
Body
{
"parent": {
"type": "database_id",
"database_id": "2156****************************"
},
"icon": {
"type": "emoji",
"emoji": "📖"
},
"properties": {
"タイトル": {
"type": "title",
"title": [
{
"text": {
"content": "Notionで実現する新クリエイティブ仕事術"
}
}
]
},
"分類": {
"multi_select": [
{
"name": "仕事効率化"
},
{
"name": "ツール"
}
]
},
"購入日": {
"date": {
"start": "2022-04-24"
}
}
}
}
結果
アイコンをランダムで設定する方法はないっぽい。
送信する側でご自由にってことかな。
検索(フィルタ)のあれこれ
POST https://api.notion.com/v1/databases/{database_id}/query
タイトルに特定文字を含む場合
{
"filter": {
"property": "タイトル",
"title": {
"contains": "Notion"
}
}
}
複合フィルタ
{
"filter": {
"and": [
{
"property": "読了",
"checkbox": {
"equals": true
}
},
{
"or": [
{
"property": "分類",
"multi_select": {
"contains": "プログラミング"
}
},
{
"property": "分類",
"multi_select": {
"contains": "ツール"
}
}
]
}
]
}
}
ソート
{
"filter": {
"property": "タイトル",
"title": {
"contains": "Notion"
}
},
"sorts": [
{
"property": "購入日",
"direction": "descending"
}
]
}