본문 바로가기
won2dev-log
HomeArchiveTagsCategoriesAboutProjects
HomeArchiveTagsCategoriesAboutProjects
won2dev-logwon2dev-logwon2dev-log

비전공 개발자의 로그 | won2dev-log

Navigation
  • Home
  • Archive
  • About
  • Projects
Categories
  • Docs
  • TIL
  • Automation
  • Git · GitHub
  • Project
Tags
  • TIL
  • Java
  • Spring
  • Backend
  • n8n
더보기
About

기록을 거름 삼아 공유는 성장을 만든다.

LicensePrivacy
© won2dev 2026. All rights reserved.
Home›Automation› TIL – n8n Notion + Slack 데이터 자동화
Automation

TIL – n8n Notion + Slack 데이터 자동화

won2dev·2025년 11월 05일
#n8n#JavaScript#TIL

TIL – n8n Notion + Slack 데이터 자동화
이미지

📌 기능

  • 오전 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 메시지 형식 단순화 → 이모티콘 + 날짜 + 지역 + 구매내역 형태로 재구성
  • 최종 구조
    1. 스케줄러 → 조회 안내 메시지 발송
    2. 새 데이터 필터링 → Notion 저장
    3. Slack 메시지 생성 → 발송

✅ 해결 방법

Slack 안내 메시지 노드 (임시 처리)

  • 스케줄러 트리거 시작 시, 조회 안내 메시지를 1차원적으로 발송
  • 현재는 데이터 유무와 관계없이 아래 문구를 전송
plain text
🛒 {{ 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

데이터 자동화

공유하기
이전 글TIL – n8n SlackLens (Google Gemini 기반 장애 자동 감지 및 보고 시스템)다음 글 TIL – n8n AI 노드 JSON 전달 문제 해결

목차

  • 📌 기능
  • 📌 문제 상황
  • 🔍 시도 과정
  • ✅ 해결 방법
  • Slack 안내 메시지 노드 (임시 처리)
  • ⚠️ 추후 개선 포인트
  • Notion 100개 리밋 문제
  • 데이터 유무에 따른 메시지 분기 처리
  • 💡 느낀 점 및 배운 점
  • 🏷️ 필수 키워드

카테고리

Automation

태그

#n8n#JavaScript#TIL

최근 글

Git 요약 (1) - Rebase, Stash, Squash MergeTIL - MSA 핵심 요소 정리TIL - (4) Spring 어노테이션 정리: Mockito를 활용한 단위 테스트TIL - (3) Spring 어노테이션 정리: Lombok Getter, Setter와 생성자TIL - (2) Spring MVC와 WebFlux의 차이: 블로킹과 논블로킹