NotionのAPIを使うと、Notionのデータベースのデータをプログラムから操作できます。ここでは、Notion APIの利用準備から、Pythonでデータベース内容をクエリする方法までを紹介します。
目次
Step 1. Notion APIの設定
1.1 Notion APIのインテグレーションを作成する
- Notionの開発者向けページにアクセスします。
- 「Create new integration」をクリックして、新しいインテグレーションを作成します。
- Integration name: 任意の名前(例:
My Notion API Integration) - Associated workspace: 操作したいデータベースがあるワークスペースを選択します。
- 作成が完了すると、「Internal Integration Token」(トークン)が表示されます。このトークンをコピーして、後で使用できるように安全に保管してください。
1.2 トークンとデータベースを連携する
- Notionで操作したいデータベースページを開きます。
- 右上の「...」をクリックして「接続先」の項目に、先ほど作成したインテグレーション名を入力し、追加します。
これで、APIがそのデータベースにアクセスできるようになります。
Step 2. Python環境の準備
Pythonを使ってNotion APIを操作します。事前にPythonがインストールされていることを確認し、必要なライブラリをインストールしましょう。
pip install requests
Step 3. Notion APIを使ってデータベース内容を取得する
次に、Pythonコードを使って、指定したデータベースの内容をクエリします。以下のコードを参考にしてください。
3.1 必要な環境変数を設定
NOTION_TOKENとDATABASE_IDを環境変数として設定することで、安全に管理します。
- APIトークンは、Step 1で取得した「Internal Integration Token」を使います。
- DATABASE_IDは、対象データベースのURLから取得できます。
- データベースを開くとURLに含まれている32桁の英数字がデータベースIDです。
例
例えば、URLが次のようになっているとき:
https://www.notion.so//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?v=yyyyyyyyyyyyyyyyyy
この場合、xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxがDATABASE_IDです。
3.2 データベース内容をクエリするコード
以下にPythonコードを示します。このコードでは、環境変数を読み込み、Notionデータベースの内容を取得するためのAPIリクエストを送信します。
import requests
import os
# 環境変数からAPIトークンとデータベースIDを取得
NOTION_TOKEN = os.environ["NOTION_TOKEN"]
DATABASE_ID = os.environ["DATABASE_ID"]
# APIリクエストヘッダーを設定
headers = {
"Authorization": f"Bearer {NOTION_TOKEN}",
"Content-Type": "application/json",
"Notion-Version": "2022-06-28",
}
# データベースの内容をクエリ
def query_database(db_id):
url = f"https://api.notion.com/v1/databases/{db_id}/query"
response = requests.post(url, headers=headers)
if response.status_code == 200:
print("Database query result:", response.json())
else:
print(f"Error querying database: {response.status_code}, {response.text}")
# クエリの実行
query_database(DATABASE_ID)3.3 実行手順
- 上記のコードをファイルに保存します(例:
notion_query.py)。 - 環境変数として
NOTION_TOKENとDATABASE_IDを設定します。
例:.envファイルを使用する場合
NOTION_TOKEN=your_notion_token_here
DATABASE_ID=your_database_id_here
- コードを実行して、データベースの内容が取得できているか確認します。
python notion_query.py
補足情報
- クエリ結果の表示: クエリ結果はJSON形式で返され、各ページの情報が含まれます。
propertiesキーを使って、各ページのプロパティにアクセスできます。 - エラーハンドリング: ステータスコードをチェックしてエラーの際には詳細情報が表示されるようになっているため、エラー発生時は原因を確認しやすくなります。
これで、Notion APIを使ってデータベース内容を取得できるようになりました!さらにデータを絞り込みたい場合は、クエリにフィルタを追加することもできます。