path
Jin's Lab
코드로 실험하고 기록하는 개발 일지 · J.Lab
커리어 성장 자기 계발 방향성 탐색

Jin's Lab

코드로 실험하고 기록하는 개발 일지. 커리어와 삶의 방향을 탐색하며 기록하는 공간입니다

BloggingTools

Notion 자동화 시간 범위 설계 — select 옵션 방식의 함정과 트리거 분리 전략

J.Lab · 2026-06-29

안녕하세요, 여러분! J.Lab입니다. 블로그를 운영하면서 글 쓰는 즐거움 못지않게 자동화 시스템을 구축하는 재미에 푹 빠져 살고 있는데요. 오늘은 그 과정에서 겪었던 꽤나 깊은 삽질과 해결 과정을 공유해 볼까 합니다. 저는 Notion DB와 Google Apps Script(GAS)를 연동하여 블로그 글을 자동으로 발행하는 시스템을 오랫동안 잘 운영해왔습니다.

최근 'KidStory' 콘텐츠의 발행 시간을 18시와 20시에서 18시와 21시로 변경해야 할 필요가 생겼습니다. 단순히 Notion DB의 '발행 시간대' select 옵션을 수정하면 될 거라 생각했는데, 이 작은 변경이 제 블로그 자동 발행 시스템 전체를 흔들 줄은 꿈에도 몰랐습니다. 예상치 못한 문제에 부딪히며 Notion 자동화 시간 범위 설계에 대한 깊은 고민을 하게 되었습니다.

Notion select 옵션, 단순 변경의 함정

처음에는 아주 간단한 작업이라고 생각했습니다. Notion DB에서 '발행 시간대' 속성의 기존 옵션인 '18~20시'를 '18~21시'로 변경하는 것이었죠. '발행 시간대' 옵션은 스크립트가 블로그 글을 발행할 시간을 결정하는 중요한 기준이었습니다. 저는 아무 생각 없이 기존 옵션을 수정하고 스크립트의 트리거 시간만 조정하면 될 것이라고 여겼습니다.

하지만 막상 시스템을 돌려보니 원하는 대로 작동하지 않았습니다. 18시에 글이 발행되는 건 맞는데, 21시에 발행되어야 할 글이 보이지 않았습니다. 처음에는 스크립트 로직에 문제가 있나 싶어 코드를 여러 번 들여다봤지만, 별다른 이상을 찾을 수 없었습니다. 대체 무엇이 문제일까 밤새도록 고민했습니다.

결국 문제의 원인은 Notion select 옵션 자체에 있었습니다. 기존의 '18~20시' 옵션은 스크립트가 내부적으로 '18시'와 '20시' 두 개의 독립적인 시간대역으로 해석하고 처리하도록 설계되어 있었습니다. 그런데 이 옵션을 '18~21시'로 변경하자, 스크립트는 이를 18시부터 21시까지를 아우르는 '하나의' 시간대역으로 인식하게 된 것입니다. 두 개의 분리된 시간대역이 아니라, 18시, 19시, 20시, 21시를 모두 포괄하는 광범위한 시간으로 해석해버린 것이죠.

GAS 트리거와 Notion DB 연동, 깊어지는 삽질

Notion select 옵션의 텍스트 변경이 단순한 문자열 변경이 아니라, 데이터 처리 방식에 구조적인 영향을 미친다는 사실을 깨달았습니다. J.Lab은 이 부분에서 정말 깊은 삽질을 경험했죠. 기존 스크립트는 '18~20시' 같은 문자열을 받아서 정규 표현식이나 특정 로직으로 '18시', '20시'처럼 개별 시간을 파싱하는 방식이었습니다.

새로운 '18~21시'는 '18', '21'이라는 숫자를 추출하게 만들었지만, 제가 의도했던 18시와 21시 '각각'의 시간대역으로 분리해 처리하는 것이 아니었습니다. 결국, Notion DB의 '발행 시간대' 옵션 자체를 '18시', '20시', '21시'와 같이 명확한 개별 시간 단위로 분리해야 한다는 결론에 도달했습니다. 이것이 Notion 자동화 시간 범위 설계의 핵심이었습니다.

노션 데이터베이스의 시간 범위 select 옵션을 디버깅하는 개발자의 모습

단순히 옵션 이름만 바꾸는 것이 아니라, 각 시간을 독립적인 선택지로 만들어야 했던 것입니다. DB에서 시간대역 옵션을 하나하나 분리하고, GAS 스크립트도 그에 맞춰 여러 시간대를 독립적으로 처리하도록 로직을 전면 수정했습니다. 이 과정에서 Google Apps Script의 트리거 설정 방식도 함께 고민하게 되었습니다.

효율적인 트리거 분리 전략과 재발 방지

문제의 본질을 파악한 후, 저는 Notion DB의 select 옵션을 '18시', '20시', '21시' 등으로 세분화했습니다. 그리고 GAS 스크립트가 이 개별 옵션들을 정확히 인식하고 처리하도록 로직을 개선했습니다. 하지만 여기서 그치지 않았습니다. 보다 견고하고 유연한 시스템을 위해 트리거 분리 전략을 채택했습니다.

이전에는 하나의 스크립트와 하나의 트리거가 '18~20시' 같은 광범위한 시간대를 처리하려 했지만, 이제는 18시용 트리거, 20시용 트리거, 21시용 트리거를 각각 생성했습니다. 각 트리거는 해당 시간에만 작동하며, Notion DB에서 해당 시간 옵션이 설정된 포스트만 가져와 블로그 자동 발행을 수행하도록 했습니다.

각기 다른 시간에 맞춰 개별적으로 작동하는 여러 개의 GAS 트리거 아이콘

이렇게 하면 각각의 발행 시간이 완벽하게 독립적으로 관리되어 유연성과 확장성 모두를 확보할 수 있었습니다. 예상치 못한 시간대역 변경에도 훨씬 안정적으로 대응할 수 있게 되었죠. 예를 들어, 19시 발행을 추가해야 한다면, Notion DB에 '19시' 옵션을 추가하고, GAS에 '19시' 트리거만 하나 더 만들면 끝입니다. 기존 시스템에 영향을 주지 않아 유지보수도 훨씬 용이해졌습니다.

이번 경험을 통해 Notion 자동화 시간 범위 설계의 중요성을 뼈저리게 느꼈습니다. 겉으로 보기엔 사소해 보이는 Notion select 옵션의 변경이 전체 시스템에 얼마나 큰 영향을 미칠 수 있는지 다시 한번 깨달았습니다. J.Lab은 이번 삽질을 통해 더욱 견고하고 유연한 블로그 자동 발행 시스템을 구축하게 되었지.

노션 DB에서 블로그로 이어지는 견고하고 효율적인 자동 발행 워크플로우를 나타내는 일러스트

GAS 트리거와 Notion select 옵션의 연동 방식에 대한 깊은 이해를 얻은 것은 물론, 시스템 설계 시 예측 가능한 변경 사항과 예측 불가능한 변경 사항에 어떻게 대비해야 할지 배울 수 있었습니다. 이 글이 나와 같은 시행착오를 겪는 분들에게 작은 도움이 되기를 바라며, 다음에는 더 복잡한 조건의 자동화에 도전해볼 생각입니다. 다들 즐거운 코딩 라이프 되세요!

BloggingTools DatabaseDesign GoogleAppsScript NotionAutomation TechJournal WorkflowAutomation
← 이전 글
최근 게시물
다음 글 →
이전 게시물
소개
path
J.Lab

커리어와 삶의 방향을 탐색하며
기록하는 공간입니다

카테고리
403 Forbidden Error 1 AIContentGeneration 1 AIImageGeneration 1 API Automation 1 api-troubleshooting 1 AppsScript 1 AutomationTroubleshooting 1 BlogAutomation 2 BloggerAPI 1 BloggerCustomization 1 BloggerTemplateEditing 1 BloggerThemeCustomization 1 BloggerXMLStructure 1 BloggingTools 1 BWidgetBIncludable 1 CardClickHandler 1 CodeLog 1 CSSOverlay 1 DatabaseDesign 1 DeveloperJourney 2 ExecutionLimit 1 FluxModel 1 FreeAIImage 1 FrontEndDev 1 GAS Blogger API 1 gas-automation 1 GASTimeout 1 GCP Project Linkage 1 GeminiAPI 1 GmailRestrictions 1 Google Apps Script 1 google-apps-script 1 GoogleAppsScript 2 HuggingFace 1 HuggingFaceAPI 1 jlab-codelog 1 JLabDevLog 1 notion-api 1 notion-database 1 NotionAutomation 1 NotionIntegration 1 OAuth Scope 1 pagination 1 PollinationsAI 1 PositionAbsolute 1 RandomDelay 1 TechJournal 1 WebAccessibility 1 WebDevJourney 1 WorkflowAutomation 1 XMLSpecialCharacters 1
인기 글
부업 블로그 자동 발행 시스템 처음부터 만든 후기
부업 블로그 자동 발행 시스템 처음부터 만든 후기
Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
Blogger 테마 XML 직접 뜯어봤더니 알게 된 것들
블로그 이미지 자동화 삽질기 — HuggingFace로 시작해 Pollinations로 갈아탄 이야기
블로그 이미지 자동화 삽질기 — HuggingFace로 시작해 Pollinations로 갈아탄 이야기
Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
Google Apps Script 실행 시간 6분 제한 — Gmail 계정 함정과 랜덤 딜레이 설계
Notion API page_size 함정 — 우선순위 항목이 조회에서 빠지는 이유와 해결법
Notion API page_size 함정 — 우선순위 항목이 조회에서 빠지는 이유와 해결법
GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
GAS에서 Blogger API 403 오류 완전 정복 — appsscript.json 스코프와 GCP 프로젝트 연결
Notion 자동화 시간 범위 설계 — select 옵션 방식의 함정과 트리거 분리 전략
Notion 자동화 시간 범위 설계 — select 옵션 방식의 함정과 트리거 분리 전략
다른 블로그
IssueLog
IssueLog
issuelog.jinbytes.com
KidStory
KidStory
kidstory.jinbytes.com
IT Story
IT Story
jinbytes.com
© Jin's Lab · J.Lab · All Rights Reserved
jinbytes.com · Powered by Blogger