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を調べて使いこなしていきたいですね!