안녕하세요, 여러분! 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 자동화 시간 범위 설계의 핵심이었습니다.
단순히 옵션 이름만 바꾸는 것이 아니라, 각 시간을 독립적인 선택지로 만들어야 했던 것입니다. DB에서 시간대역 옵션을 하나하나 분리하고, GAS 스크립트도 그에 맞춰 여러 시간대를 독립적으로 처리하도록 로직을 전면 수정했습니다. 이 과정에서 Google Apps Script의 트리거 설정 방식도 함께 고민하게 되었습니다.
효율적인 트리거 분리 전략과 재발 방지
문제의 본질을 파악한 후, 저는 Notion DB의 select 옵션을 '18시', '20시', '21시' 등으로 세분화했습니다. 그리고 GAS 스크립트가 이 개별 옵션들을 정확히 인식하고 처리하도록 로직을 개선했습니다. 하지만 여기서 그치지 않았습니다. 보다 견고하고 유연한 시스템을 위해 트리거 분리 전략을 채택했습니다.
이전에는 하나의 스크립트와 하나의 트리거가 '18~20시' 같은 광범위한 시간대를 처리하려 했지만, 이제는 18시용 트리거, 20시용 트리거, 21시용 트리거를 각각 생성했습니다. 각 트리거는 해당 시간에만 작동하며, Notion DB에서 해당 시간 옵션이 설정된 포스트만 가져와 블로그 자동 발행을 수행하도록 했습니다.
이렇게 하면 각각의 발행 시간이 완벽하게 독립적으로 관리되어 유연성과 확장성 모두를 확보할 수 있었습니다. 예상치 못한 시간대역 변경에도 훨씬 안정적으로 대응할 수 있게 되었죠. 예를 들어, 19시 발행을 추가해야 한다면, Notion DB에 '19시' 옵션을 추가하고, GAS에 '19시' 트리거만 하나 더 만들면 끝입니다. 기존 시스템에 영향을 주지 않아 유지보수도 훨씬 용이해졌습니다.
이번 경험을 통해 Notion 자동화 시간 범위 설계의 중요성을 뼈저리게 느꼈습니다. 겉으로 보기엔 사소해 보이는 Notion select 옵션의 변경이 전체 시스템에 얼마나 큰 영향을 미칠 수 있는지 다시 한번 깨달았습니다. J.Lab은 이번 삽질을 통해 더욱 견고하고 유연한 블로그 자동 발행 시스템을 구축하게 되었지.
GAS 트리거와 Notion select 옵션의 연동 방식에 대한 깊은 이해를 얻은 것은 물론, 시스템 설계 시 예측 가능한 변경 사항과 예측 불가능한 변경 사항에 어떻게 대비해야 할지 배울 수 있었습니다. 이 글이 나와 같은 시행착오를 겪는 분들에게 작은 도움이 되기를 바라며, 다음에는 더 복잡한 조건의 자동화에 도전해볼 생각입니다. 다들 즐거운 코딩 라이프 되세요!