MENU

Notion APIを使ってデータベースを操作する方法

NotionのAPIを使うと、Notionのデータベースのデータをプログラムから操作できます。ここでは、Notion APIの利用準備から、Pythonでデータベース内容をクエリする方法までを紹介します。

目次

Step 1. Notion APIの設定

1.1 Notion APIのインテグレーションを作成する

  1. Notionの開発者向けページにアクセスします。
  2. 「Create new integration」をクリックして、新しいインテグレーションを作成します。
  • Integration name: 任意の名前(例: My Notion API Integration
  • Associated workspace: 操作したいデータベースがあるワークスペースを選択します。
  1. 作成が完了すると、「Internal Integration Token」(トークン)が表示されます。このトークンをコピーして、後で使用できるように安全に保管してください。

1.2 トークンとデータベースを連携する

  1. Notionで操作したいデータベースページを開きます。
  2. 右上の「...」をクリックして「接続先」の項目に、先ほど作成したインテグレーション名を入力し、追加します。

これで、APIがそのデータベースにアクセスできるようになります。

Step 2. Python環境の準備

Pythonを使ってNotion APIを操作します。事前にPythonがインストールされていることを確認し、必要なライブラリをインストールしましょう。

pip install requests

Step 3. Notion APIを使ってデータベース内容を取得する

次に、Pythonコードを使って、指定したデータベースの内容をクエリします。以下のコードを参考にしてください。

3.1 必要な環境変数を設定

NOTION_TOKENDATABASE_IDを環境変数として設定することで、安全に管理します。

  1. APIトークンは、Step 1で取得した「Internal Integration Token」を使います。
  2. DATABASE_IDは、対象データベースのURLから取得できます。
  • データベースを開くとURLに含まれている32桁の英数字がデータベースIDです。

例えば、URLが次のようになっているとき:

https://www.notion.so//xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx?v=yyyyyyyyyyyyyyyyyy

この場合、xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxDATABASE_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 実行手順

  1. 上記のコードをファイルに保存します(例: notion_query.py)。
  2. 環境変数としてNOTION_TOKENDATABASE_IDを設定します。
    例: .envファイルを使用する場合
   NOTION_TOKEN=your_notion_token_here
   DATABASE_ID=your_database_id_here
  1. コードを実行して、データベースの内容が取得できているか確認します。
python notion_query.py

補足情報

  • クエリ結果の表示: クエリ結果はJSON形式で返され、各ページの情報が含まれます。propertiesキーを使って、各ページのプロパティにアクセスできます。
  • エラーハンドリング: ステータスコードをチェックしてエラーの際には詳細情報が表示されるようになっているため、エラー発生時は原因を確認しやすくなります。

これで、Notion APIを使ってデータベース内容を取得できるようになりました!さらにデータを絞り込みたい場合は、クエリにフィルタを追加することもできます。

目次