Open4
Notion のAPI について
公式ドキュメント
Notion API の設定
ログイン後、新しいインテグレーションを作成するをクリックする。
利用予定のワークスペースを設定したらシークレットトークンが発行される
次にNotionアプリから、共有 > 招待で作成したインテグレーションを追加します。
以上でAPIが叩けるようになります。
詳細な手順については公式ページを参照
データベースの情報を取得する
Noiton の URL は下記の様な構成らしいので、database_id をメモしておく
https://www.notion.so/{workspace_name}/{database_id}?v={view_id}
サクッとデータベースの中身を取得するPythonスクリプト
import requests
from pprint import pprint
SECRET_TOKEN = 'your secret token'
DATABASE_ID = 'your database id'
url = f"https://api.notion.com/v1/databases/{DATABASE_ID}/query"
headers = {
'Authorization': 'Bearer ' + SECRET_TOKEN,
'Notion-Version': '2021-05-13',
'Content-Type': 'application/json',
}
r = requests.post(url, headers=headers)
pprint(r.json(), sort_dicts=False)
トークンとデータベースがわかればリクエストするだけで取得できる
ページを作成する
データベースの1レコードもNotionではページとして扱っている。
そのため、新しいレコードを追加したい場合はページを作ればよい
データベース内にページを作成するスクリプト
import requests
import json
from pprint import pprint
SECRET_TOKEN = 'your secret token'
DATABASE_ID = 'your database id'
url = f"https://api.notion.com/v1/pages"
headers = {
'Authorization': 'Bearer ' + SECRET_TOKEN,
'Notion-Version': '2021-05-13',
'Content-Type': 'application/json',
}
body = {
'parent': {
'database_id': DATABASE_ID,
},
'properties':{
'カラム名':{
'プロパティのタイプ': [
{
'type': 'text',
'text': {
'content': "test用のtitle"
}
}
]
}
}
}
r = requests.post(url, headers=headers, data=json.dumps(body))
pprint(r.json(), sort_dicts=False)
ゴリゴリJSONを作っているので長いが、必要なオブジェクトをJSONにして /page へ Post すれば作成自体は簡単にできる。
ページのアイコンやカーバーなどの追加方法はこちらを参考にする。
ページの要素や別のプロパティのタイプを使いたい場合はこのページを参考にJSONを作れば良さそう。