株式会社コードリック株式会社コードリック
トップ
TOP
会社情報
COMPANY
請負開発
ORDER
自社開発
PRODUCT
開発実績
RECORD
お知らせ
NEWS
ブログ
BLOG
お問い合わせ
CONTACT
TOPトップCOMPANY会社情報ORDER請負開発PRODUCT自社サービスRECORD開発実績NEWSお知らせBLOGブログCONTACTお問い合わせ
BLOG
ブログ
  1. TOP > 
  2. BLOG
  3.  > プログラミング
  4.  > Notion APIを使用してNotionから情報を取得してみました
2024/4/12

Notion APIを使用してNotionから情報を取得してみました

プログラミング
こんにちは。中島です。

今年の1月くらいにChatGPTとNotionを連携させて自社の情報をChatGPTに回答させてみました。

そこで、今回はNotion APIにどのようにアクセスしたかを簡単にまとめていこうと思います。
 

APIキー(トークン)の取得と権限


NotionのAPIキーを取得するために、下記のサイトにアクセスします。
https://www.notion.so/my-integrations

「New integration(インテグレーション)」をクリックして、ボタンを押していきます。
進んでいくうちに、機能の設定が可能です。

- コンテンツを読み取る
- コンテンツを更新
- コンテンツを挿入

今回は、読み取るだけなので、コンテンツを読み取るだけにチェックを入れていきます。

進んでいくと、シークレット トークンをコピーできます。
こちらを後で使っていくので、コピーしておきましょう!
 

 


ページに設定する


作成したトークンにアクセスできるページを設定します。
細かくトークンを切り替えることで、すでにあるNotionの情報を壊してしまうことを防ぐことができます!

今回は、読み取り専用にしてあるので問題ありません!

※Notionのトークンは、設定したページから下の情報を全て取得できます。

右上の「・・・」をクリック
↓
コネクトの追加
↓
先ほど作成したインテグレーション名を選択

これでNotion側の設定は完了です。
 

検索して取得するサンプルコード(Python)


今回は、一つのトークンのみを使用しているので、下記のように定義しておきます。
 

class Notion:
def __init__(self):
self.headers = {
'Notion-Version': '2022-06-28',
'Authorization': 'Bearer ' + NOTION_API_KEY,
'Content-Type': 'application/json',
}


アクセスを切り替えるために、トークンを切り替えたい場合は、下記のように書いておけば良いと思います。

class Notion:
def __init__(self, token=NOTION_API_KEY):
self.headers = {
'Notion-Version': '2022-06-28',
'Authorization': 'Bearer ' + token,
'Content-Type': 'application/json',
}

 


Notionの検索


Notion内の検索を利用して情報を取得することができます。
この検索機能とChatGPTのfunction callを組み合わせることで簡単に社内の情報にアクセスできるように設定しています。

def search(self, query: str, start_cursor="", page_size=10) -> list[dict]:
"""
Params
---
query: str
検索クエリ
start_cursor: str
検索開始位置
page_size: int
取得件数
Returns
---
res: list[dict]
検索結果
"""
request_json = {
"query": query,
"page_size": page_size,
}
if start_cursor:
request_json["start_cursor"] = start_cursor
response = requests.post(
"https://api.notion.com/v1/search",
headers=self.headers,
json=request_json
)
response = response.json()
return response.get('results', [])

 

ページの取得


ここでは、ページ内の情報を取得しています。
先ほどの検索で得られた情報を元に、さらに詳しくページ内の情報を取得することができます。

def get_page_contents(self, page_id: str) -> dict:
"""
Params
---
page_id: str
ページID
Returns
---
res_text: dict
ページの本文
"""
if not page_id:
return NotionSearch(
result=[],
has_more=False,
next_cursor=""
)
response = requests.get(
f"https://api.notion.com/v1/blocks/{page_id}/children",
headers=self.headers,
)
if response.status_code != 200:
return NotionSearch(
result=[],
has_more=False,
next_cursor=""
)
return response.json()


まとめ


今回は、Notionから情報を取得してみました。

簡単にNotionの情報にアクセスできるので、皆さんも遊んでみてはいかがでしょうか!
いろいろなサービスを触って見るのは面白いと思います!
back
トップ
TOP
会社情報
COMPANY
請負開発
ORDER
自社サービス
PRODUCT
開発実績
RECORD
お知らせ
NEWS
ブログ
BLOG
お問い合わせ
CONTACT
トップ
TOP
会社情報
COMPANY
請負開発
ORDER
自社サービス
PRODUCT
開発実績
RECORD
お知らせ
NEWS
ブログ
BLOG
お問い合わせ
CONTACT
株式会社コードリック
〒920-0362 石川県金沢市古府3丁目45-2
TEL 076-249-8388 / FAX 076-203-0044
SDGsのロゴ
株式会社コードリック
〒920-0362 石川県金沢市古府3丁目45-2
TEL 076-249-8388 / FAX 076-203-0044
プライバシーポリシー
SDGsのロゴ
©株式会社コードリック. All Rights Reserved.プライバシーポリシー
©株式会社コードリック. All Rights Reserved.