LoginSignup
6
5

More than 1 year has passed since last update.

Notion APIでデータベースを操作する

Last updated at Posted at 2023-03-03

NotionAPIを使うことで、Notion上のデータベースを効率的に操作することができます。
Notion上で日記を書いているのですが、効率的に書きたいことがあったので調査しました。
ここでは、NotionAPIを使って、データをフィルターするAPIとデータを追加するAPIの記述方法をメモ程度に残します。

今回はPythonを使用します。

事前準備

Notion側でAPIを使うための設定が必要になります。
以下の記事を参考にしてください。
https://programming-zero.net/notion-api-setting/

NotionAPIでデータベースを操作するにはデータベースIDが必要です。
データベースのURLをコピーし、https://www.notion.so/?v=後に続く部分がデータベースIDになります。

以下のようなURLであった場合、testa12345cd67890ef12ab34cd5testがデータベースIDになります。

https://www.notion.so/testa12345cd67890ef12ab34cd5test?v=...

データをフィルターする

NotionAPIで特定のデータを取得することができます。
たとえば、今日の日付に該当するデータを取得する場合、以下のように記述します。

import requests
import datetime
import pytz

today = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
date = format(today, '%Y-%m-%d')

url = "https://api.notion.com/v1/databases/" + DATABASE_ID + "/query"

headers = {
    "Accept": "application/json",
    "Notion-Version": "2022-06-28",
    "Authorization": "Bearer " + NOTION_API_KEY
}

# データ取得
data = {
    "filter": {
        "property": "日付",
        "date": {
            "equals": date
        }
    }
}

response = requests.post(url, headers=headers, json=data)
data = response.json()
print(data)

データを追加する

NotionAPIを使って、データベースに新しいデータを追加することができます。
たとえば、今日の日付に該当するデータを追加する場合、以下のように記述します。

import requests
import datetime
import pytz

today = datetime.datetime.now(pytz.timezone('Asia/Tokyo'))
date = format(today, '%Y-%m-%d')

headers = {
        "Accept": "application/json",
        "Notion-Version": "2022-06-28",
        "Authorization": "Bearer " + NOTION_API_KEY
}

url = 'https://api.notion.com/v1/pages'

# データ追加
data = {
    "parent": {
        "database_id": DATABASE_ID
    },
    "properties": {
    "Name": {
        "title": [
        {
            "text": {
                "content": date
            }
        }
        ],
    },
    "日付": {
        "date": {
            "start": date
            }
        },
    },
}
response = requests.post(url, headers=headers, json=data)

感想

NotionAPIを使いこなせばNotionのでできることが非常に増えそうです。
色々なAPIを調べて使いこなしていきたいですね!

6
5
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
5