워크플로 소개
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노드에서 알림 시스템 확장 가능). - 낮은 유지 관리: 예약된 실행으로 수동 개입을 줄이고, 수동 트리거는 디버깅을 지원합니다.
단계별 워크플로우 로직
- 트리거: 워크플로우는 Schedule Trigger(평일 오전 6시–오후 10시 매 30분) 또는 Manual Trigger를 통해 시작됩니다.
- 데이터 가져오기:
- Google Sheet Data는 모든 양식 응답을 검색합니다.
- SQL Get inquiries from Google은
source_name = 'GoogleForm'으로 태그된 모든 MySQL 레코드를 가져옵니다.
- 정규화: Rename GSheet variables 노드는 Google Form 필드를 적절한 날짜 서식이 지정된 표준화된 JSON으로 변환하고
source_name = "GoogleForm"을 추가합니다. - 비교: Compare Datasets 노드는
timestamp및source_name을 사용하여 두 데이터 세트를 정렬하고 네 가지 스트림을 출력합니다.- MySQL에 업서트할 항목(
Add MySQL records) - 오래된 검사가 필요한 항목(
No reply too long?) - 업데이트된
DB Status가 있는 항목(DB Status assigned?) - 동기화 확인 준비가 된 항목(
DB Status in sync?)
- MySQL에 업서트할 항목(
- 데이터베이스 업서트: 새 레코드 또는 변경된 레코드는 Add MySQL records를 통해 MySQL에 삽입/업데이트됩니다(
timestamp기준 업서트). - 조건부 처리:
- 레코드가 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"로 업데이트하여 동기화 확인 플래그로 사용합니다.
- 완료: 모든 경로는 오류 없이 완료되어 시스템 간의 데이터 동등성을 유지합니다.
이 워크플로우는 사용자 제출 양식 데이터를 관계형 데이터베이스와 통합하기 위한 확장 가능한 기반을 제공하며, 고객 지원, 이벤트 관리 또는 리드 추적 시스템에 이상적입니다.
사용 방법: JSON을 다운로드한 뒤 n8n에서 “파일에서 가져오기”를 선택하세요.