1. 背景
最近の仕事では、ドキュメントを自動処理し、処理結果をNotionのページ内のデータベースに自動保存し、さらに結果を保存するためのNotionページを自動作成することで、業務フローを加速したいと考えていて、どのように自動化処理を進めればよいでしょうか?
以下の手順が役に立つことになるなら、嬉しいです!
2. Requirements
Notion API Key
- 取得方法
-
こちらからアクセスする
- Integration Nameを作成する
- ワークスペースを選択した上、TypeをInternalを指定する
-
Capabilitiesを以下のような形で指定する
-
Internal Integration Secret (Notion API Key) を保存する
-
データベースID と データベースコラム名
-
データベースIDは、情報を挿入したいデータベースを特定するために使用され、データベース列名は、新しく作成されるページの情報を特定するために使用されます。
-
取得方法
-
ページ内の内容を順番に確認して特定する
-
すべてのデータベースをリストアップ
-
コード
notion_find_database.pydef print_page_content(block_id, indent=0): page_content = get_notion_page_content(block_id) if page_content: for block in page_content['results']: block_type = block['type'] indent_str = " " * indent print(f"{indent_str}Block type: {block_type}") if block_type == 'child_database': database_id = block['id'] print(f"{indent_str}Found database with ID: {database_id}") get_database_properties(database_id) elif block_type == 'column_list' or block_type == 'column': print(f"{indent_str}Processing column list or column") print_page_content(block['id'], indent + 2) elif 'text' in block[block_type]: text = ''.join([t['plain_text'] for t in block[block_type]['text']]) print(f"{indent_str}Text: {text}") else: print(f"{indent_str}No text content")
-
3. データを新しいページを作成してインサートする
環境変数の設定
notion_insert_database.py
from dotenv import load_dotenv
load_dotenv()
NOTION_API_KEY = os.getenv("NOTION_API_KEY")
DATABASE_ID = os.getenv("NOTION_DATABASE_ID")
NOTION_API_URL = "https://api.notion.com/v1/pages"
データ構成
-
以下のようにデータを構造化してInsertする
notion_insert_database.pychildren_blocks = [ { "object": "block", "type": "paragraph", "paragraph": { "rich_text": [ { "type": "text", "text": { "content": block } } ] } } for block in content_blocks ]
新しいページを作成する
-
"名前"
はデータベース内のTypeがTitleである値に対応する -
title
は新しいページの名前 -
toggle
は新しいページ内のデータ構成形式notion_insert_database.pynew_page_data = { "parent": {"database_id": DATABASE_ID}, "properties": { "名前": { "title": [ { "text": { "content": title } } ] } }, "children": [ { "object": "block", "type": "toggle", "toggle": { "rich_text": [ { "type": "text", "text": { "content": "transcript" } } ], "children": children_blocks } } ] }
結果確認
-
Codeは以下のような形
notion_insert_database.pypage_title = "New Notion Page" page_content = "Contents in Page" * 10 create_notion_page(page_title, page_content)
-
Toggle Listの形でまとまれてることを確認できた
Code