📌 기능
- 오전 9시 자동 조회 및 안내 메시지 발송: 스케줄러 트리거를 통해 현재 일자에 추가된 구매내역 조회 시작, Slack으로 안내 메시지 발송
- 새 구매내역 필터링:
FilterNewSheetRows 노드에서 Google Sheet 구매 데이터와 Notion 기존 데이터를 비교하여 새로운 항목만 추출 - Notion 데이터 저장:
CreateNotionPages 노드에서 새로운 데이터가 존재할 경우 Notion DB에 저장 - Slack 메시지 생성 및 발송:
SlackMessageBuilder 노드에서 저장된 데이터 기준으로 메시지 생성 후 Slack 채널로 발송 - 데이터 중복 방지: 이미 저장된 항목은 저장하지 않고 Slack 메시지도 중복 없이 발송
📌 문제 상황
- Notion 노드의 데이터 조회 제한 (100개 한도)
- 제작 후 Notion에 100개 이상의 데이터가 존재할 경우 일부 데이터가 누락됨
- Notion API에서 page_size: 100 로 최대치가 고정된 상태
- 데이터가 없을 때 Slack 메시지 미발송 문제
- 데이터가 존재하지 않는 경우 조건 분기 처리가 제대로 작동하지 않아 안내 메시지가 누락될 가능성이 있음
🔍 시도 과정
FilterNewSheetRows 노드에서 Google Sheet와 Notion 데이터를 비교 후 새로운 데이터만 추출- 저장할 데이터가 없는 경우에도 Slack으로 조회 안내 메시지를 발송하도록 처리
- Slack 메시지 형식 단순화 → 이모티콘 + 날짜 + 지역 + 구매내역 형태로 재구성
- 최종 구조
- 스케줄러 → 조회 안내 메시지 발송
- 새 데이터 필터링 → Notion 저장
- Slack 메시지 생성 → 발송
✅ 해결 방법
Slack 안내 메시지 노드 (임시 처리)
- 스케줄러 트리거 시작 시, 조회 안내 메시지를 1차원적으로 발송
- 현재는 데이터 유무와 관계없이 아래 문구를 전송
🛒 {{ new Date().toISOString().split("T")[0] }} 현재 일자에 추가된 일정을 조회 중입니다. 저장될 내용이 없으면 추가 메시지가 발송되지 않습니다.
🛒 {{ new Date().toISOString().split("T")[0] }} 현재 일자에 추가된 일정을 조회 중입니다. 저장될 내용이 없으면 추가 메시지가 발송되지 않습니다.
→ 추후에는 데이터 유무에 따라 “업데이트할 내용이 없습니다.”라는 조건부 메시지 발송 로직 으로 개선 예정
- FilterNewSheetRows 노드
- Google Sheet와 Notion 데이터를 비교하여 신규 항목만 반환
- CreateNotionPages 노드
- 새 데이터가 존재할 경우 Notion DB에 자동 저장
- SlackMessageBuilder 노드
- 저장된 데이터를 기반으로 메시지 생성
- 현재는 1차원적 문자열 조합 형태로 처리 중
- 추후에는 Block Kit으로 확장 가능
⚠️ 추후 개선 포인트
Notion 100개 리밋 문제
- 현재 한 번에 최대 100개까지만 조회 가능
- 개선 방향
- ① 7일 단위 혹은 특정 일자 기준으로 필터링
- ② 페이지네이션 / 루프 구조 적용
- 단, 루프 방식은 조회 시간이 길어 실무 효율성이 떨어질 수 있어 해당 일자만 조회하는 방식으로 수정하는것이 좋아보임
데이터 유무에 따른 메시지 분기 처리
💡 느낀 점 및 배운 점
- n8n 스케줄러 + Notion + Slack 연동으로 완전 자동화된 데이터 파이프라인 구축이 가능하다.
- 데이터 유무에 따라 조건부 메시지 발송 로직을 설계하는 것이 핵심이다.
- 반복 저장 방지, 지역별 그룹화 등 단순하지만 실무적으로 꼭 필요한 조건들을 직접 구현했다.
- 이후에는 조건 분기 및 리밋 문제까지 완벽히 보완해보고 싶다.
🏷️ 필수 키워드
TIL
n8n
Notion
Slack
Function Node
데이터 자동화