Notion APIを使ってデータベース内の特定のアイテムにアクセスする際、データベース全体をクエリするのではなく、あらかじめページIDがわかっている場合には、そのIDを使用して直接アイテムを取得する方法が便利です。ページIDを指定して直接アクセスすることで、効率的かつ高速に目的のデータにアクセスできます。
本記事では、特定のページIDがわかっている場合に、Notion APIのエンドポイントretrieve a page
を使用してページデータを取得する方法について解説します。
1. ページIDとは?
Notionでは、すべてのページ(アイテム)にユニークなページIDが自動的に割り当てられます。このIDは、ページがデータベースに属しているかどうかにかかわらずユニークで、ページごとに一意です。たとえば、あるデータベース内の特定のアイテム(ページ)に対して、既知のページIDを使ってアクセスする場合に、このページIDを直接指定してデータを取得できます。
2. Notion APIのページ取得エンドポイント
ページIDを使ってページを直接取得するには、以下のエンドポイントを利用します。
https://api.notion.com/v1/pages/{page_id}
ここで、{page_id}
は実際のページIDに置き換えます。このエンドポイントにGETリクエストを送信することで、指定されたページIDに対応するデータを取得できます。
3. コードスニペット
以下のPythonコードスニペットでは、ページIDを指定して特定のページデータを取得しています。
import requests
def get_page_by_id(page_id):
"""
Notion APIを使用して特定のページIDでページデータを取得する関数。
Parameters:
page_id (str): NotionのページID(例: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
Returns:
dict: 取得したページデータ
"""
url = f"https://api.notion.com/v1/pages/{page_id}"
# 必要なヘッダーを設定
headers = {
"Authorization": "Bearer YOUR_INTEGRATION_TOKEN",
"Notion-Version": "2022-06-28"
}
response = requests.get(url, headers=headers)
# 正常なレスポンスの場合はデータを返す
if response.status_code == 200:
page_data = response.json()
return page_data
else:
# エラー処理
print(f"Error retrieving page: {response.status_code}, {response.text}")
return None
# 使用例
page_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" # 取得したいページのID
page_data = get_page_by_id(page_id)
if page_data:
print("Page data:", page_data)
4. コードの詳細
- URLの組み立て
https://api.notion.com/v1/pages/{page_id}
の形式で、ページIDをURLに組み込むことで、Notionのページ取得エンドポイントにアクセスします。 - ヘッダーの設定
Notion APIにアクセスするには、以下の2つのヘッダーが必要です。 "Authorization": "Bearer YOUR_INTEGRATION_TOKEN"
- Notionの統合トークンを指定します。
YOUR_INTEGRATION_TOKEN
には実際のトークンを設定します。
- Notionの統合トークンを指定します。
"Notion-Version": "2022-06-28"
- APIのバージョンを指定します。最新のAPIバージョンに合わせて指定してください。
- レスポンスの処理
requests.get
を使ってAPIにリクエストを送り、レスポンスが200
(正常)であればデータを取得し、エラーが発生した場合はエラーメッセージを出力します。
5. 実行例
関数を呼び出す際に、取得したいページのID(例えば "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
)をpage_id
として渡します。これにより、そのIDに対応するページのデータが取得できます。
page_id = "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
page_data = get_page_by_id(page_id)
まとめ
Notion APIを使って、ページIDが既知のデータを直接取得する方法を紹介しました。ページIDでアイテムにアクセスする方法は、特定のデータだけに効率的にアクセスしたいときに役立ちます。