notionとdeepnoteの連携方法。
notionとdeepnoteの連携で躓いた箇所を記す。
deepnoteのホーム画面→Integrations→Add integration→Edit environment variablesへ。
keyとvalueを入力。
keyは適当な名前、valueはAPIキー等。
keyを小文字で入力したことで余計な時間がかかった。
たとえEdit environment variablesのkey欄は小文字で入力しても、
os.environ[]の中は必ず大文字で入力すること。
notionとdeepnoteの連携にまつわる記事が少ないので、忘れないようにメモを置く。
import os
import requests
import pandas as pd
# keys are stored in env vars to be hidden from users
api_key = os.environ["NOTION_API_KEY"] #[]の中は大文字で入力
database_id = os.environ["DATABASE_ID"] #[]の中は大文字で入力
# define request to Notion API
headers = {
"Authorization": f"Bearer {api_key}",
"Notion-Version": "2021-08-16",
"Content-Type": "application/json",
}
# load first page
response = requests.post(
f"https://api.notion.com/v1/databases/{database_id}/query", headers=headers
).json()
# iteratively load all pages
records = response["results"]
while response["has_more"]:
response = requests.post(
f"https://api.notion.com/v1/databases/{database_id}/query",
json={"start_cursor": response["next_cursor"]},
headers=headers,
).json()
# define a helper function to transform the JSON to a Pandas DF
def get_raw_value(item):
item_type = item['type']
if type(item[item_type]) is list:
if item[item_type][0]['type'] == 'text':
return item[item_type][0]['plain_text']
return item[item_type]
# create Pandas DF
all_values = []
for record in records:
properties = record['properties']
all_values.append({
'Name': get_raw_value(properties['Name']),
'Total': get_raw_value(properties['Total']),
})
df = pd.DataFrame(all_values)
df
この記事が気に入ったらサポートをしてみませんか?