Pythonを使用しNotionワークスペース内のデータを読み取る

Pythonを使用しNotionワークスペース内のデータを読み取ってみます。

Notionワークスペース内のデータを読み取る前に、データベースを接続するintegrationsの設定を行っておきます。

■Python

今回のPythonのバージョンは、「3.8.5」を使用しています。(Windows10)(pythonランチャーでの確認)

■Notionワークスペース内のデータを読み取る

では、早速Notionワークスペース内のデータを読み取ってみますが、今回は、Notionにログインし「Add a pape」をクリックし、「テスト」というページを作成し、このデータを読み取ります。

作成後、作成したページの右上部にある「Share」をクリックします。

クリックすると、「Add peole,emails,groups, or intergrations」と表示されている箇所をクリックします。

クリックすると、前回設定を行ったintegrationsが表示されますので、こちらをクリックします。

クリックすると、integrationsが選択された状態になりますので、この状態で「Invite」ボタンをクリックします。

クリックすると、「Share」に設定したintegrationsが追加されました。これでNotionワークスペース内のデータを読み取ることができます。「Getting started – Notion API」(https://developers.notion.com/docs/getting-started)では、

Integrations don’t have access to any pages (or databases) in the workspace at first. A user must share specific pages with an integration in order for those pages to be accessed using the API. This helps keep you and your team’s information in Notion secure.(Integrationsは、最初はワークスペースのどのページ(またはデータベース)にもアクセスできません。APIを使用してページにアクセスするためには、ユーザは特定のページをIntegrationと共有する必要があります。これにより、Notionにあるあなたやあなたのチームの情報を安全に保つことができます。)

上記の内容が記載されています。

■コード

import requests

from requests import status_codes

token = "integrationsの設定時に発行されたトークン"

databaseId = "データベースID"

headers ={"Authorization": "Bearer "+token,
        "Notion-Version": "2021-08-16"
}

def readDatabase(databaseId, headers):
    readUrl = f"https://api.notion.com/v1/databases/{databaseId}"

    res = requests.request("GET",readUrl,headers=headers)
    print(res.status_code)
    print(res.text)

readDatabase(databaseId, headers)

Integrationと共有後、Notionワークスペース内のデータを読み取るスクリプトを書いていきます。インポートでrequestsモジュールを呼び出します。token変数に、integrationsの設定時に発行されたトークンを貼り付けて格納します。

格納後、databaseId変数を定義し、データベースIDを格納します。

データベースIDは、データを読み取るURL(https://www.notion.so/○○○?v=***)の「○○○」の部分がデータベースのIDになります。

あとは、「Retrieve a database – Notion API」(https://developers.notion.com/reference/retrieve-a-database)を参考にし、データを読み取るために、https://api.notion.com/v1/databases/に、requests.request()関数を用いて、リクエストを送信し、ページ内のデータを読み取ります。読み取った情報をres変数に格納。

最後にprint()関数でステータスコードと、ページ内のデータ(text)を出力します。

■実行・検証

このスクリプトを「notion_test.py」という名前で、Pythonが実行されている作業ディレクトリ(カレントディレクトリ)に保存し、コマンドプロンプトから実行してみます。

実行してみると、requestsモジュールを使用し、Notionワークスペース内のデータを読み取り、print()関数で読み取ったデータを出力させることができました。

コメント

タイトルとURLをコピーしました