업무자동화(효율화)

Notion API로 엑셀 데이터를 자동 입력하는 파이썬 자동화 프로그램 만들기

크레용0215 2025. 4. 15. 07:27

Notion API로 엑셀 데이터를 자동 입력하는 파이썬 자동화 프로그램 만들기

업무 효율화를 위해 Notion을 자주 활용하시나요?
이번 글에서는 엑셀에 정리된 카드 사용 내역을 Notion 데이터베이스에 자동으로 등록하는 방법을 소개합니다.
Python과 Notion API를 활용하면 반복적인 수작업을 줄이고, 데이터 관리의 일관성과 정확성을 확보할 수 있습니다.


✅ Notion API란?

Notion API는 외부 프로그램(Python 등)에서 Notion의 데이터베이스에 접근하고 데이터를 읽거나 작성할 수 있도록 만든 공식 도구입니다.
즉, 여러분이 사용하는 엑셀이나 설문 데이터, 혹은 시스템 로그를 자동으로 Notion에 기록할 수 있게 도와줍니다.


✅ Notion 데이터베이스 속성(Property) 이해하기

Notion의 데이터베이스는 엑셀의 열(Column)과 유사한 구조를 가지고 있습니다.
각 열은 속성(Property)으로 불리며, 입력되는 데이터의 형식에 따라 속성 유형이 달라집니다.

속성명 속성 유형 설명
지출처 제목 (title) 각 행의 고유 이름 (필수)
날짜 날짜 (date) 일정이나 발생 일자를 기록
금액 숫자 (number) 금액, 수량 등의 수치형 데이터
지출수단 선택 (select) 정해진 항목 중 하나 선택
카테고리 관계형 (relation) 다른 데이터베이스와 연결하는 속성

 

⚠️ 중요: 엑셀 파일의 열 이름은 Notion의 속성명과 완전히 일치해야 합니다.
띄어쓰기, 대소문자, 특수문자까지 포함해 정확히 동일해야 오류 없이 작동합니다.


✅ 사전 준비: Notion API 사용을 위한 설정

1. Notion 통합(Integration) 생성

  1. Notion 개발자 포털에 접속
  2. 새 통합(Integration) 생성 → 이름 입력 관련 워크스테이션 선택 유형 선택(프라이빗, 퍼블릭)
  3. 권한: Read, Write
  4. 생성된 API KEY(Internal Integration Token) 복사하여 메모장에 임시 저장

단계1. Notion 개발자 허브포텉에 접속
단계2. 새 API 통합 생성
단계3. 생성된 API Key값 복사

2. 데이터베이스 공유 설정

  1. 노션 접속 왼쪽 상단 메뉴에서 설정 메뉴 선택 연결 메뉴 → 생성된 API 확인
  2. 자동화에 사용할 Notion 데이터베이스 열기
  3. 오른쪽 상단의 · · · 메뉴 클릭  연결 메뉴   생성된 API 선택
  4. 오른쪽 상단의 · · · 메뉴 클릭 링크 복사 선택 → 메모장에 임시 저장

단계1. 새로 만든 API 연결된 것을 확인
단계2. 자동화에 사용할 데이터베이스 열기
단계3. 연결 메뉴에서 생성된 API 선택
단계4. 데이터베이스 ID 저장

3. 데이터베이스 ID 확인

예시 링크: https://www.notion.so/aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0?v=xxxxxxxx
위 URL 중 aXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX0 이 부분이 Database ID입니다.


✅ 엑셀 예시 파일 (card_usage.xlsx)

날짜 지출처 지출수단 금액
2025-04-10 스타벅스 카드 15,000
2025-04-11 이마트 체크카드 24,000

✅ 필수 라이브러리 설치 방법

pip install pandas openpyxl requests
  • pandas: 엑셀 데이터 처리
  • openpyxl: .xlsx 파일 처리
  • requests: Notion API와 통신

✅ Python 코드: 엑셀 → Notion 자동 입력

import pandas as pd
import requests
import os

# Notion API 설정
NOTION_API_KEY = "your_secret_api_key"  # 여러분의 Notion 통합 API 키
DATABASE_ID = "your_database_id"        # Notion 데이터베이스 ID

headers = {
    "Authorization": f"Bearer {NOTION_API_KEY}",
    "Content-Type": "application/json",
    "Notion-Version": "2022-06-28"
}

# 엑셀 불러오기
df = pd.read_excel("card_usage.xlsx")

# Notion 데이터베이스에 업로드
for _, row in df.iterrows():
    data = {
        "parent": { "database_id": DATABASE_ID },
        "properties": {
            "날짜": {
                "date": { "start": str(row["날짜"].date()) }  # 시간 제거
            },
            "지출처": {
                "title": [{
                    "text": { "content": str(row["지출처"]) }
                }]
            },
            "지출수단": {
                "select": { "name": str(row["지출수단"]) }
            },
            "금액": {
                "number": int(row["금액"])
            }
        }
    }

    res = requests.post("https://api.notion.com/v1/pages", headers=headers, json=data)
    if res.status_code == 200:
        print(f"[성공] {row['지출처']} 전송 완료")
    else:
        print(f"[실패] {row['지출처']} - {res.status_code} | {res.text}")

 


✅ 코드 구성 설명

  • NOTION_API_KEY : Notion 통합 생성 시 받은 API 토큰을 문자열로 입력합니다.
  • DATABASE_ID : 입력하고자 하는 Notion DB의 고유 ID입니다.
  • df = pd.read_excel() : 엑셀 파일을 데이터프레임으로 불러옵니다.
  • requests.post() : Notion API를 사용해 각 행(row)을 DB에 업로드합니다.
  • properties : Notion 속성 구조에 맞게 데이터를 지정합니다 (날짜, 제목, 숫자, 선택 등)

✅ 실행 화면

코드 실행화면


✅ 마무리: 더 스마트한 기록과 관리

이제 여러분은 엑셀 데이터를 수동으로 복붙하지 않고, Python으로 Notion에 실시간 자동 등록할 수 있습니다.
이 방법은 지출 내역 관리, 회계 기록, 회의록 자동화 등 다양한 업무에 유용하게 활용할 수 있습니다.

"자동화는 선택이 아니라 필수입니다."
Notion + Python으로 나만의 업무 자동화를 시작해보세요.