Notion API 자동화 실전 예제 — 오늘 날짜 페이지 자동 생성

★Notion API 자동화 실전 예제 로 파이썬 스크립트 하나만 있으면 오늘 날짜를 제목으로 하는 페이지를 자동으로 생성하고, 데이터베이스에 실시간 연동까지 손쉽게 구현합니다. 초보도 바로 따라 할 수 있는 단계별 가이드!

Notion API 자동화 실전 예제를 찾던 중, 매일 아침 Notion 데이터베이스에 오늘 날짜가 포함된 페이지를 수동으로 만드는 반복 작업에 지쳐버린 상황에 직면해 계실 겁니다. Notion이 제공하는 강력한 기능을 활용하면서도 정작 페이지 생성과 같은 단순 반복 업무는 여전히 손으로 해결하다 보니, 업무 효율이 떨어지고 귀중한 시간이 낭비되는 문제가 발생합니다. 이 글에서는 Google Apps Script와 Notion API를 연동하여 매일 지정된 시간에 오늘 날짜가 제목인 페이지를 자동으로 생성하는 완벽한 설정법을 단계별로 상세히 다룹니다.

함께 보면 좋은 글: 노션 데이터베이스에 API 연동했는데 오류, 단계별 해

이 글의 핵심

- Notion Integration 토큰 발급 및 데이터베이스 ID 추출 방법
- Google Apps Script를 활용한 Notion API POST 요청 코드 작성
- 트리거를 설정하여 매일 정해진 시간에 스크립트 자동 실행 구현
- 흔히 발생하는 오류 해결 및 고급 자동화 팁

한 줄 답변

Notion API를 활용해 매일 자동으로 오늘 날짜 페이지를 생성하고, 설정부터 배포까지 5단계만으로 시간과 비용을 크게 절감합니다.

30분
시간 절감
5단계
절차
무료
비용
1시간
초기 설정 시간
2026년 07월 10일· 12분 읽기· Mebys Blog

Notion API 준비 단계 — 통합 생성 및 데이터베이스 연결

자동화를 시작하기 위해서는 가장 먼저 Notion에서 외부 접속을 허용하는 인증키를 발급받아야 합니다. Notion 개발자 문서에 따르면 모든 API 요청은 유효한 API 토큰을 헤더에 포함해야 하며, 이 토큰은 사용자의 권한을 대신하여 데이터베이스에 접근하는 열쇠 역할을 합니다. 과거에는 비공식 API를 사용하거나 스크래핑 방식을 시도했지만, 현재는 공식 지원되는 안정적인 방식을 사용하는 것이 필수적입니다. 실제 사용자들은 "안녕하세요 노션을 종종 이용중인데요 python으로 노션 안에 데이터를 read, write하고 싶어서 API를 좀 찾던중에 아래 글을 찾게 되었는데요 근데 노션에서 공식 API를 제공해준게 아니라"라며 초기에는 접근 방식 자체를 파악하기 어려워했다는 후기를 남기기도 했습니다(clien.net).

통합을 생성하려면 Notion의 개발자 포털로 이동해야 합니다. 브라우저 주소창에 https://www.notion.so/my-integrations를 입력하고 접속한 후, 왼쪽 상단의 '새로운 통합' 버튼을 클릭합니다. 통합 이름은 'Daily Page Auto Creator'와 같이 기능을 유추할 수 있는 이름으로 짓고, 관련된 워크스페이스를 선택합니다. 특히 'Capabilities' 설정 단계에서 반드시 'Read content', 'Update content', 'Insert content' 권한을 모두 체크해야 합니다. 이 권한이 없으면 스크립트가 데이터베이스에 새 페이지를 추가할 수 없어 403 Forbidden 오류가 발생합니다.

생성된 통합의 'Secrets' 탭에서 'Internal Integration Secret' 값을 복사해 둡니다. 이 문자열은 외부에 노출되지 않도록 주의해야 하며, Google Apps Script 코드 내의 변수로 저장하게 됩니다. 다음으로 자동화할 대상인 Notion 데이터베이스를 찾아가야 합니다. 데이터베이스가 포함된 페이지를 연 뒤, 우측 상단의 점 세 개 버튼을 눌러 '링크 복사'를 선택합니다. 복사된 링크에서 https://www.notion.so/username/a-b-c-d-32-Char-ID?v=... 형식에서 32자리 영문 숫자 조합인 부분이 데이터베이스 ID입니다. 이 ID 역시 스크립트에서 URL을 구성하는 데 핵심적인 요소로 사용됩니다.

주의
통합 생성 후 반드시 데이터베이스 페이지의 우측 상단 점 메뉴에서 '연결된 통합' 메뉴를 통해 방금 만든 통합을 추가해야 합니다. 이 과정을 생략하면 스크립트가 완벽하더라도 권한 거부 오류로 인해 페이지 생성이 실패합니다.
Notion API 자동화 실전 예제

Photo by cottonbro studio on Pexels

Google Apps Script 프로젝트 설정 및 기본 코드 작성

Notion API를 호출하기 위해 Google 앱스 스크립트를 사용하는 이유는 별도의 서버 구축 없이도 무료로 강력한 자동화 환경을 제공받을 수 있기 때문입니다. Google Apps Script는 구글의 서버 환경에서 JavaScript 기반의 코드를 실행할 수 있는 클라우드 플랫폼으로, 특히 Notion과 같은 외부 API와의 연동에 매우 유리합니다. 구글 개발자 문서에서도 UrlFetchApp 서비스를 사용하여 외부 HTTP 요청을 보내는 것이 표준 방법임을 명시하고 있습니다(developers.google.com/apps-script).

먼저 구글 드라이브에서 '새로 만들기' > '더보기' > 'Google Apps Script'를 선택하여 새 프로젝트를 엽니다. 프로젝트 이름은 'NotionAutoPage'로 지정합니다. 코드 편집기에는 기본적으로 myFunction()이 존재하는데, 이를 createDailyPage()로 변경합니다. 이 함수가 매일 실행될 메인 로직이 됩니다. 상단에는 앞서 발급받은 API 키와 데이터베이스 ID를 상수로 선언하여 관리합니다. 이렇게 하면 코드의 가독성이 높아지고 유지보수가 용이해집니다.

스크립트가 Notion API와 통신하기 위해서는 HTTP 요청 헤더를 정확하게 구성해야 합니다. Notion API는 버전 2022-06-28을 기준으로 요청을 처리하므로, 헤더에 'Notion-Version' 속성을 반드시 포함해야 합니다. 또한 인증을 위해 'Authorization' 헤더에 'Bearer [토큰 값]' 형식으로 키를 전송하며, 데이터 전송 형식이 JSON임을 알리기 위해 'Content-Type'을 'application/json'으로 설정합니다. 이 헤더 설정 하나가 빠지더라도 API 서버는 400 Bad Request나 401 Unauthorized 오류를 반환하므로, 구문 오타에 각별히 신경 써야 합니다.

실제 사용자 후기 중에는 개발 지식이 없는 일반인도 도구를 활용해 연동한 사례가 있습니다. "개발자도 아니고 평범한 일반인인지라... 테스트로 Zapier를 이용하여 구글 캘린더 & 노션이 연결되는 워크플로우를 만들었습니다"라는 내용처럼, 코드를 직접 짜는 것이 부담스러운 사용자들은 no-code 도구를 선택하기도 합니다(clien.net). 하지만 Google Apps Script는 비용이 들지 않으며 훨씬 더 세밀한 커스터마이징이 가능하다는 장점이 있습니다.

Notion API 자동화 실전 예제 — 날짜 페이지 생성 로직 구현

동영상으로 보는 Notion API 자동화 실전 예제

글로 충분하지 않다면 관련 영상을 함께 보세요. 클릭하면 YouTube에서 검색 결과로 이동합니다.

▶ YouTube에서 “Notion API 자동화 실전 예제” 영상 보기

이제 Notion API 자동화 실전 예제의 핵심인 페이지 생성 로직을 작성할 차례입니다. 우리의 목표는 스크립트가 실행되는 시점의 날짜를 'YYYY-MM-DD' 형식으로 가공하여, 이를 제목으로 하는 새로운 페이지를 데이터베이스에 추가하는 것입니다. 이를 위해 JavaScript의 Date 객체와 Utilities.formatDate 메서드를 활용합니다. 시간대는 한국 시간을 기준으로 해야 하므로 Asia/Seoul을 타임존으로 지정합니다.

API 요청을 보낼 때 가장 중요한 부분은 요청 바디(Body)입니다. Notion API는 JSON 형식의 데이터를 받으며, 최상위 속성으로 parentproperties가 필요합니다. parent에는 데이터베이스 ID를, properties에는 데이터베이스의 스키마에 맞는 데이터를 매핑해야 합니다. 예를 들어, 데이터베이스에서 제목 속성의 이름이 'Name'이라면, JSON 구조는 다음과 같이 작성됩니다.

const data = {
  "parent": { "database_id": DATABASE_ID },
  "properties": {
    "Name": {
      "title": [
        {
          "text": {
            "content": formattedDate
          }
        }
      ]
    }
  }
};

이렇게 구성한 데이터 객체는 JSON.stringify(data)를 통해 문자열로 변환한 뒤, UrlFetchApp.fetch()의 옵션으로 전달합니다. 성공적으로 요청이 완료되면 Notion 서버는 생성된 페이지의 정보를 JSON 형태로 반환하며, 이를 로그로 확인하여 작업이 완료되었는지 확인할 수 있습니다.

자동화 실전처리 속도80정확도90비용 절감70
Notion API 자동화 실전 예제 시각 정리

자동화 실행을 위한 트리거 설정 및 오류 해결

Notion API 자동화 체크리스트


  • Notion Integration 생성 (Settings & Members → Integrations → New integration)

  • Integration에 대상 Database 읽기·쓰기 권한 부여

  • Python 스크립트 작성

    import os, requests, datetime
    
    NOTION_TOKEN = os.getenv('NOTION_TOKEN')
    DATABASE_ID = os.getenv('DATABASE_ID')
    today = datetime.date.today().isoformat()
    
    payload = {
      "parent": {"database_id": DATABASE_ID},
      "properties": {
        "Name": {"title": [{"text": {"content": f" {today}"}}]},
        "Date": {"date": {"start": today}}
      }
    }
    headers = {"Authorization": f"Bearer {NOTION_TOKEN}", "Notion-Version": "2022-06-28", "Content-Type": "application/json"}
    requests.post("https://api.notion.com/v1/pages", json=payload, headers=headers)
            


  • GitHub Actions 워크플로에 매일 00:00 UTC 실행 스케줄 추가

코드 작성을 마쳤다면, 이제 매일 아침 자동으로 코드가 실행되도록 설정해야 합니다. Google Apps Script 에디터 좌측 메뉴에서 '트리거'(시계 아이콘)를 클릭합니다. 우측 하단의 '트리거 추가' 버튼을 누르고, 이벤트 소스를 '시간 기반'으로, 시간 기반 트리거의 유형을 '일일 타이머'로 설정합니다. 그리고 시간은 업무 시작 전인 '오전 6시~7시' 등 원하는 시간대를 지정합니다.

트리거 설정 후 첫 실행이 중요합니다. '편집' > '현재 프로젝트의 트리거'에서 방금 설정한 트리거의 함수명(예: createDailyPage)을 클릭하여 즉시 실행해 봅니다. 혹은 코드 편집기 상단의 '실행' 버튼을 눌러 수동으로 테스트합니다. 이때 권한 승인 팝업이 뜨면 본인의 구글 계정을 선택하고 '검토' > '허용'을 클릭하여

자주 묻는 질문

Q. Notion API를 사용하려면 별도의 인증 토큰이 필요한가요?

A. 네, Notion API를 호출하려면 통합(Integration)에서 발급받은 비밀 토큰이 필요합니다. 이 토큰을 헤더에 `Authorization: Bearer ` 형태로 포함시켜야 합니다.

Q. 오늘 날짜 페이지를 자동으로 만들 때 시간대는 어떻게 지정하나요?

A. 날짜 속성을 설정할 때 ISO 8601 형식(`YYYY-MM-DD`)을 사용하면 기본적으로 UTC 기준이 적용됩니다. 필요하면 `timezone` 파라미터를 추가하거나 서버 시간대를 맞춰 주세요.

Q. 페이지가 이미 존재하면 중복 생성되지 않게 할 수 있나요?

A. 예, 스크립트에서 생성 전 해당 데이터베이스에 같은 날짜를 가진 페이지가 있는지 검색(query)하고, 결과가 있으면 생성 요청을 건너뛰도록 로직을 구현하면 됩니다.

Q. 자동화 스케줄링은 어떤 방법으로 하면 좋을까요?

A. GitHub Actions, AWS Lambda + CloudWatch, 혹은 로컬 cron 잡 등 다양한 방법이 있습니다. 선택은 프로젝트 규모와 배포 환경에 맞춰 결정하면 됩니다.

매주 IT 실전 가이드 받아보세요

맥OS·크롬·자동화·AI 도구 주 1회 큐레이션. 광고·스팸 없는 깔끔한 메일.

무료 구독하기

M
Mebys Blog
맥OS · 크롬 · 자동화 · AI 도구 가이드


댓글 남기기

Mebys Blog에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기