Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách làm việc với Notion API trong Python
Trong thời đại số hóa, tự động hóa trở thành chìa khóa để tối ưu hóa công việc, và Notion – một nền tảng quản lý công việc linh hoạt – đã cung cấp API mạnh mẽ để người dùng có thể quản lý dữ liệu của mình một cách hiệu quả. Bài viết này sẽ hướng dẫn bạn cách làm việc với Notion API trong Python, giúp bạn tự động hóa các thao tác như tạo, đọc, cập nhật, và xóa dữ liệu trong cơ sở dữ liệu của Notion. Từ việc thiết lập API đến viết các hàm Python để thao tác dữ liệu, bạn sẽ thấy rõ cách Notion API có thể hỗ trợ tối đa cho công việc của mình.
Bài viết này sẽ hướng dẫn cách:
- Thiết lập API của Notion
- Thiết lập mã Python
- Tạo các mục trong cơ sở dữ liệu
- Truy vấn và đọc dữ liệu từ cơ sở dữ liệu
- Cập nhật và xóa các mục trong cơ sở dữ liệu
Thiết lập Notion API và cơ sở dữ liệu Python
Đầu tiên, chúng ta cần tạo một cơ sở dữ liệu toàn trang trên bảng Notion của mình. Ví dụ trong bài này sẽ sử dụng một cơ sở dữ liệu lưu trữ các bài đăng blog của mình. Cơ sở dữ liệu sẽ gồm các trường: URL, Title (tiêu đề), và Published (ngày xuất bản) để minh họa cách thao tác với các loại dữ liệu văn bản và ngày.
Tiếp theo, làm theo hướng dẫn chính thức để tạo một tích hợp Notion (Integration). Qua các bước này bạn sẽ:
Bài viết này được đăng tại [free tuts .net]
- Tạo tích hợp và lấy Token.
- Chia sẻ cơ sở dữ liệu với tích hợp của bạn.
- Lưu ID của cơ sở dữ liệu để dùng trong mã Python.
Khi đã hoàn tất thiết lập, bạn sẽ sẵn sàng tự động hóa việc tạo, đọc, cập nhật và xóa dữ liệu trong cơ sở dữ liệu của mình.
Thiết lập mã Python
Để làm việc với API, chúng ta sẽ dùng thư viện requests
. Cài đặt thư viện bằng lệnh:
pip install requests
Sau đó, xác định token của bạn, ID của cơ sở dữ liệu, và các headers cần thiết:
import requests NOTION_TOKEN = "YOUR_INTEGRATION_TOKEN" DATABASE_ID = "YOUR_DATABASE_ID" headers = { "Authorization": "Bearer " + NOTION_TOKEN, "Content-Type": "application/json", "Notion-Version": "2022-06-28", }
Tạo mục trong cơ sở dữ liệu Notion Python
Để tạo một mục mới, ta gửi yêu cầu POST
đến API:
def create_page(data: dict): create_url = "https://api.notion.com/v1/pages" payload = {"parent": {"database_id": DATABASE_ID}, "properties": data} res = requests.post(create_url, headers=headers, json=payload) return res
Dữ liệu cần tuân theo các định dạng của từng trường trong bảng cơ sở dữ liệu. Ví dụ: với các cột URL, Title, và Published, bạn có thể tạo dữ liệu như sau:
from datetime import datetime, timezone title = "Tiêu đề mẫu" description = "Mô tả mẫu" published_date = datetime.now().astimezone(timezone.utc).isoformat() data = { "URL": {"title": [{"text": {"content": description}}]}, "Title": {"rich_text": [{"text": {"content": title}}]}, "Published": {"date": {"start": published_date, "end": None}} } create_page(data)
Truy vấn cơ sở dữ liệu và đọc các mục
Để truy vấn và đọc dữ liệu từ cơ sở dữ liệu, bạn có thể dùng hàm sau:
def get_pages(num_pages=None): url = f"https://api.notion.com/v1/databases/{DATABASE_ID}/query" get_all = num_pages is None page_size = 100 if get_all else num_pages payload = {"page_size": page_size} response = requests.post(url, json=payload, headers=headers) data = response.json() results = data["results"] while data["has_more"] and get_all: payload = {"page_size": page_size, "start_cursor": data["next_cursor"]} response = requests.post(url, json=payload, headers=headers) data = response.json() results.extend(data["results"]) return results
Lấy tất cả các trang và duyệt qua từng mục:
pages = get_pages() for page in pages: page_id = page["id"] props = page["properties"] url = props["URL"]["title"][0]["text"]["content"] title = props["Title"]["rich_text"][0]["text"]["content"] published = props["Published"]["date"]["start"]
Cập nhật mục trong cơ sở dữ liệu Notion
Để cập nhật một mục, chúng ta gửi yêu cầu PATCH
:
def update_page(page_id: str, data: dict): url = f"https://api.notion.com/v1/pages/{page_id}" payload = {"properties": data} res = requests.patch(url, json=payload, headers=headers) return res
Ví dụ, cập nhật trường Published:
page_id = "ID của trang" new_date = datetime(2023, 1, 15).astimezone(timezone.utc).isoformat() update_data = {"Published": {"date": {"start": new_date, "end": None}}} update_page(page_id, update_data)
Xóa mục trong cơ sở dữ liệu Notion
Để xóa một mục, bạn sử dụng lại endpoint cho việc cập nhật nhưng đặt archived
thành True
:
def delete_page(page_id: str): url = f"https://api.notion.com/v1/pages/{page_id}" payload = {"archived": True} res = requests.patch(url, json=payload, headers=headers) return res
Kết bài
Qua bài viết này, mình đã tìm hiểu cách sử dụng Notion API trong Python để tự động hóa các thao tác trên cơ sở dữ liệu như tạo, đọc, cập nhật, và xóa dữ liệu. Với sự hỗ trợ của Notion API, bạn có thể xây dựng các ứng dụng linh hoạt và tiết kiệm thời gian trong việc quản lý thông tin. Hy vọng hướng dẫn này sẽ giúp bạn dễ dàng tích hợp và khai thác Notion API vào công việc hàng ngày, mở ra nhiều cơ hội nâng cao hiệu suất làm việc.