Notion APIからPHPでデータを取得する方法

Notionには、APIが提供されていて JavaScriptや PHPなどのプログラミング言語を使って、Notionのデータを取得したり、Notionにデータを投入することができます。

今回は、PHPを使ってデータを取得する方法についてメモしておきます。

Integrationを作成しよう

Notion APIを使うには、Integrationを作成する必要があります。次のサイトから新しい Integrationを作成しましょう。

名前や、ワークスペースを選んで、適切な権限を選択します。データを更新する必要がなければ、「コンテンツを読み取る」にだけチェックを入れるとよいでしょう。

すると、「シークレットトークン」という文字列が生成されるので、これをメモしておきます。

ページから「コネクト」を追加する

次に、共有したいデータを保存しているページに、今作成した Integrationを「コネクト」します。右上のメニューボタンをクリックして、「コネクト」メニューをクリックしたら、先ほど作成した名前で検索してみましょう。見つかったら、追加しておきます。

データベースIDをコピーしよう

次に、このページの「データベースID」を取得します。WebブラウザでNotionを表示したら、アドレス欄の次の部分をコピーします。

https://notion.so/XXXXX/[データベースID]?v=XXXXX

最後の「/」から「?」までの間の文字列になります。これをコピーしましょう。これで準備完了です。

PHPのプログラムソースサンプル

作成するPHPのプログラムソースは、次のような感じです。

<?php

$curl = curl_init();

$query_ar = [
];
$query = json_encode($query_var);

curl_setopt_array($curl, [
	CURLOPT_URL => "https://api.notion.com/v1/databases/【データベースID】/query",
	CURLOPT_RETURNTRANSFER => true,
	CURLOPT_ENCODING => "",
	CURLOPT_MAXREDIRS => 10,
	CURLOPT_TIMEOUT => 30,
	CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
	CURLOPT_CUSTOMREQUEST => "POST",
	CURLOPT_HTTPHEADER => [
		"Notion-Version: 2022-06-28",
		"accept: application/json",
		'Authorization: Bearer ' . '【シークレットトークン】'
	],
	CURLOPT_POSTFIELDS => $query
]);

$response = curl_exec($curl);
$err = curl_error($curl);

curl_close($curl);

if ($err) {
	echo "cURL Error #:" . $err;
} else {
	$response = json_decode($response);
	print_r($response);
}

「データベースID」と「シークレットトークン」を、先ほど取得しておいた文字列に置き換えましょう。これで正しく動作すれば、画面に取得した内容がPHPのオブジェクトの形式で表示されます。

後はこのデータを処理して、PHPで利用していきましょう。

コメントを残す