홈 / n8n 워크플로 템플릿 / 양방향 Google 시트 및 MySQL 데이터 동기화 워크플로

양방향 Google 시트 및 MySQL 데이터 동기화 워크플로

GoogleSheets MySQL Integration

Google 시트(양식 응답)와 MySQL 데이터베이스 간에 데이터를 자동으로 동기화하며, 조건부 로직을 사용하여 삽입, 업데이트 및 상태 추적을 처리합니다.

복합노드 12개데이터 분석Google 시트MySQL데이터 동기화

워크플로 소개

Google Sheets와 MySQL 양방향 동기화 워크플로우

이 n8n 워크플로우 템플릿은 Google Sheets(일반적으로 Google Forms에서 제공)와 MySQL 데이터베이스 간의 강력한 양방향 동기화 시스템을 구현합니다. 이벤트 또는 콘서트 문의 관리를 위해 설계되었으며, 자동화된 상태 추적, 조건부 알림 및 필드 매핑을 지원하면서 두 시스템 간의 데이터 일관성을 보장합니다. 워크플로우는 업무 시간 동안 예약된 기준으로 실행되며 즉각적인 실행을 위해 수동으로 트리거할 수도 있습니다.

워크플로우 기능

이 워크플로우의 핵심 목적은 다음과 같습니다.

  • Google Sheet(예: Google Form 응답)에서 새 문의 또는 업데이트된 문의 레코드를 가져옵니다.
  • MySQL 테이블(ConcertInquiries)에서 source_name = 'GoogleForm'인 해당 레코드를 검색합니다.
  • id, record_created, record_updated와 같은 자동 관리 필드를 무시하고 공유 키(timestamp 및 source_name)를 기반으로 두 데이터 세트를 비교합니다.
  • 새 Google Sheet 레코드 또는 변경된 Google Sheet 레코드를 MySQL 데이터베이스에 업서트(삽입 또는 업데이트)합니다.
  • 비교 결과 내에서 DB Status 필드의 변경 사항을 감지하고 해당 업데이트를 Google Sheet로 다시 전파합니다.
  • 응답이 없는 오래된 문의(4시간 이상)를 식별하고 알림을 트리거합니다.
  • 레코드가 동기화된 것으로 확인되면 데이터베이스에서 동기화 플래그를 유지합니다.

주요 기능 및 역량

  • 양방향 동기화: 특정 조건 하에서 Google Sheets 또는 MySQL의 변경 사항이 다른 시스템에 반영될 수 있습니다.
  • 필드 정규화: Google Form 열 이름을 표준화된 데이터베이스 친화적인 필드 이름으로 자동 이름 변경 및 재서식 지정(예: 날짜 형식을 YYYY-MM-DD로 변환).
  • 조건부 로직: 여러 IF 노드를 사용하여 다양한 동기화 시나리오를 처리합니다.
    • 오래된 문의 감지
    • 상태 필드 업데이트
    • 동기화 확인
  • 예약 및 수동 트리거: 평일 오전 6시부터 오후 10시까지 30분마다 자동으로 실행되며, 주문형 실행을 지원합니다.
  • 데이터 비교: Compare Datasets 노드를 활용하여 시스템 관리 열을 제외하면서 지능적으로 차이점을 감지합니다.
  • 문서 지원: Google Form 설정 지침과 필요한 MySQL 테이블 스키마를 연결하는 스티키 노트가 포함되어 있습니다.

주요 노드 및 목적

노드 유형 목적
Schedule Trigger scheduleTrigger 평일 업무 시간(*/30 6-22 * * 1-5) 동안 30분마다 워크플로우 실행을 자동화합니다.
"Execute Workflow" 클릭 시 manualTrigger 테스트 또는 긴급 동기화를 위해 수동 트리거를 허용합니다.
Google Sheet Data googleSheets Google 스프레드시트의 지정된 시트(Form Responses 1)에서 모든 행을 읽습니다.
SQL Get inquiries from Google mySql source_name = 'GoogleForm'인 ConcertInquiries 테이블에서 모든 레코드를 가져옵니다.
Rename GSheet variables set 원시 Google Form 필드 이름을 정규화된 데이터베이스 열 이름으로 매핑하고 Luxon의 DateTime을 사용하여 날짜를 재서식 지정합니다.
Compare Datasets compareDatasets timestamp 및 source_name을 병합 키로 사용하여 Google Sheet 데이터(이름 변경 후)와 MySQL 레코드를 비교합니다. 시스템 필드를 건너뜁니다.
Add MySQL records mySql 중복을 방지하기 위해 timestamp를 기준으로 일치시켜 ConcertInquiries에 upsert 작업을 수행합니다.
No reply too long? if 레코드의 timestamp가 4시간보다 오래되었는지 확인합니다. 참이면 알림 로직으로 라우팅합니다.
DB Status assigned? if DB Status 필드가 MySQL에서 업데이트되었는지(different.db_status.inputB를 통해) 감지하고 Google Sheet 업데이트를 트리거합니다.
Update GSheet status googleSheets 원본 Google Sheet 행의 DB Status 및 Timestamp 열만 업데이트합니다.
DB Status in sync? if 유효한 동기화 상태의 프록시로 source_name이 존재하는지 확인한 후 레코드를 동기화된 것으로 표시합니다.
Sync MySQL data mySql source_name 필드에 "Sync"를 추가하여 MySQL 레코드를 업데이트하여 성공적인 양방향 동기화를 확인합니다.
Send Notifications noOp 향후 알림 로직(예: 이메일, Slack)을 위한 자리 표시자입니다. 현재는 아무것도 하지 않지만 경고 경로를 표시합니다.
Sticky Notes stickyNote 설정 지침을 제공합니다. 하나는 Google Form 구조용이고 다른 하나는 SQL 스키마 gist에 연결됩니다.

사용 사례 및 이점

주요 사용 사례: Google Forms를 통해 제출된 이벤트 또는 콘서트 예약 문의를 관리하여 구조화된 MySQL 데이터베이스에 안정적으로 저장하고, 직원이 시트 또는 데이터베이스에서 직접 상태를 업데이트할 수 있도록 합니다.

이점:

  • 데이터 무결성: 플랫폼 간 중복을 방지하고 일관된 필드 이름을 보장합니다.
  • 운영 효율성: 양식에서 쿼리 가능한 데이터베이스로의 데이터 입력을 자동화합니다.
  • 상태 추적: 팀 구성원이 두 시스템 중 하나에서 문의 상태를 업데이트할 수 있으며, 변경 사항이 모두 반영됩니다.
  • 경고 준비: 후속 조치를 위해 오래된 문의를 식별합니다(noOp 노드에서 알림 시스템 확장 가능).
  • 낮은 유지 관리: 예약된 실행으로 수동 개입을 줄이고, 수동 트리거는 디버깅을 지원합니다.

단계별 워크플로우 로직

  1. 트리거: 워크플로우는 Schedule Trigger(평일 오전 6시–오후 10시 매 30분) 또는 Manual Trigger를 통해 시작됩니다.
  2. 데이터 가져오기:
    • Google Sheet Data는 모든 양식 응답을 검색합니다.
    • SQL Get inquiries from Google은 source_name = 'GoogleForm'으로 태그된 모든 MySQL 레코드를 가져옵니다.
  3. 정규화: Rename GSheet variables 노드는 Google Form 필드를 적절한 날짜 서식이 지정된 표준화된 JSON으로 변환하고 source_name = "GoogleForm"을 추가합니다.
  4. 비교: Compare Datasets 노드는 timestamp 및 source_name을 사용하여 두 데이터 세트를 정렬하고 네 가지 스트림을 출력합니다.
    • MySQL에 업서트할 항목(Add MySQL records)
    • 오래된 검사가 필요한 항목(No reply too long?)
    • 업데이트된 DB Status가 있는 항목(DB Status assigned?)
    • 동기화 확인 준비가 된 항목(DB Status in sync?)
  5. 데이터베이스 업서트: 새 레코드 또는 변경된 레코드는 Add MySQL records를 통해 MySQL에 삽입/업데이트됩니다(timestamp 기준 업서트).
  6. 조건부 처리:
    • 레코드가 4시간보다 오래된 경우(No reply too long? → true), Send Notifications(현재 자리 표시자)로 흐릅니다.
    • DB Status가 MySQL에서 수정된 경우(DB Status assigned? → true), Update GSheet status는 새 상태를 Google Sheet로 다시 작성합니다.
    • 레코드가 유효한 경우(DB Status in sync? → true), Sync MySQL data는 source_name을 "GoogleFormSync"로 업데이트하여 동기화 확인 플래그로 사용합니다.
  7. 완료: 모든 경로는 오류 없이 완료되어 시스템 간의 데이터 동등성을 유지합니다.

이 워크플로우는 사용자 제출 양식 데이터를 관계형 데이터베이스와 통합하기 위한 확장 가능한 기반을 제공하며, 고객 지원, 이벤트 관리 또는 리드 추적 시스템에 이상적입니다.

사용 방법: JSON을 다운로드한 뒤 n8n에서 “파일에서 가져오기”를 선택하세요.