블로그
BLOG — 튜토리얼

Google Sheets를 데이터베이스처럼 쓰기

PostgreSQL을 띄우기엔 팀이 준비 안 됐고, 그렇다고 데이터를 종이에 적어 둘 순 없을 때. Google Sheets는 놀랍도록 잘 버티는 '가벼운 DB'가 됩니다. 5,000행 이하, 초당 쓰기 3건 이하라는 조건만 지키면요.

이 튜토리얼은 문의 접수 폼을 예시로, n8n의 Google Sheets 노드 세 가지 동작만으로 Append / Lookup / Update가 모두 되는 미니 CRM을 만듭니다. 30분이면 끝납니다.

1. 시트 설계 — 헤더 한 줄이 스키마다

시트를 DB처럼 쓰려면 첫 행이 '컬럼 정의'라는 마음가짐이 필요합니다. 사람이 읽기 편한 한글 헤더 대신 영문 snake_case를 쓰세요. n8n 표현식에서 {{$json.customer_email}}로 바로 쓸 수 있습니다.

// 시트 A1:H1 헤더
id | created_at | customer_name | customer_email | subject | body | status | assigned_to

// 예시 데이터 A2
INQ-20260710-001 | 2026-07-10T10:23:00Z | 김민수 | kim@ex.co | 견적 문의 | ... | new | (empty)
id 컬럼은 반드시 고유해야 합니다. 자동증가는 없지만 INQ-{{$now.toFormat('yyyyMMdd')}}-{{$itemIndex}} 같은 표현식으로 충분히 유일한 키를 만들 수 있습니다.

2. Append — 새 문의를 받아 적재

웹사이트 문의 폼에서 온 데이터를 시트 맨 아래에 한 줄 추가하는 흐름입니다. n8n WebhookGoogle Sheets (Append) 두 노드로 끝납니다.

문의 접수 파이프라인LIVE
HOOKWebhook 수신SETid 생성 · 정규화SHEETGoogle Sheets AppendMAIL접수 확인 메일
  1. n8n에서 Webhook 노드 추가, POST 메서드, path는 /inquiry
  2. Set 노드로 id, created_at, status: 'new' 필드 생성
  3. Google Sheets 노드 → Operation: Append, Range: Inquiries!A:H
  4. Column Mapping을 시트 헤더와 1:1 매칭
  5. 마지막에 Gmail 또는 Send Email 노드로 접수 확인 메일 발송

3. Lookup — 상태 조회 API 만들기

고객이 '내 문의 어떻게 됐어요?' 물어볼 때 답할 수 있어야 합니다. Google Sheets 노드의 Lookup 오퍼레이션이 정확히 이걸 위해 있습니다.

// Google Sheets 노드 설정 (Lookup)
Operation:     Lookup Row(s)
Range:         Inquiries!A:H
Lookup Column: id
Lookup Value:  {{ $json.query.id }}
Return All Matches: false

이 노드 앞에 Webhook (GET /inquiry/status)을 붙이면, 5분 만에 조회 API가 됩니다. 응답은 Respond to Webhook 노드로 JSON 그대로 던지세요.

4. Update — 담당자 배정과 상태 변경

가장 헷갈리는 부분이 여기입니다. Google Sheets에는 '주키(primary key)' 개념이 없어서, n8n은 '매칭 컬럼(Matching Column)' 값을 기준으로 행을 찾아 갱신합니다. 우리가 id 컬럼을 유일하게 만들어 둔 이유가 이겁니다.

// Update 설정
Operation:       Update Row
Range:           Inquiries!A:H
Matching Column: id
Values to Send:
  status:      'assigned'
  assigned_to: 'hans@synact.ai'
  // id는 넣지 않음 — 매칭에만 사용
Update가 매칭 실패하면 조용히 0행 갱신되고 끝납니다. 실무에선 Update 뒤에 If 노드로 {{$json.updatedRows}} > 0을 검사해 실패 시 슬랙 알림을 보내는 게 안전합니다.

5. 동시성 — 시트가 무너지는 지점

Google Sheets API는 프로젝트당 분당 300 요청 제한이 있습니다. 웹훅 트래픽이 폭주하면 429 에러가 쏟아지고, 최악의 경우 Append가 같은 행에 겹쳐 쓰기까지 합니다. 다음 세 가지를 지키면 대부분 커버됩니다.

  • Google Sheets 노드에 Retry On Fail 3회, 간격 2초 설정
  • 고빈도 워크플로우엔 Queue Mode로 n8n 자체를 큐잉
  • 쓰기 스파이크가 잦다면 Redis 큐를 앞단에 두고 초당 5건 이하로 흘리기

언제 진짜 DB로 옮길까

다음 신호 중 두 개 이상이 보이면 이사할 때입니다. PostgreSQL 노드로 바꾸는 건 30분 작업이고, 워크플로우 구조는 거의 그대로 둡니다.

행 수
5,000행 초과
쓰기 빈도
초당 3건 이상
동시 편집자
5명 이상
Lookup 지연
2초 이상
시트로 시작해서, 아플 때 옮기세요. '처음부터 제대로'를 고민하느라 시작을 3개월 미루는 게 가장 큰 손해입니다.SynAct.ai 컨설팅팀

정리

Google Sheets를 DB로 쓰는 건 '임시방편'이 아니라 정당한 아키텍처 선택입니다. 팀이 시트를 편하게 편집할 수 있다는 점, 백업이 자동이라는 점, 무료라는 점 — 이 세 가지 이점을 저평가하지 마세요. 대신 위의 한계선은 정확히 알고 쓰세요. 넘어가는 순간 옮기면 됩니다.

이 가이드는 n8n 2.29.9 + Google Sheets Append · Lookup · Update 노드 조합을 실제 사용자 300건 규모의 미니 CRM에서 왕복 검증했습니다. 마지막 검증: 2026-03-22.
우리 팀 데이터 흐름을 시트로 시작할지, 처음부터 DB로 갈지 판단이 안 선다면 30분 무료 상담에서 함께 그려봅니다.

글로만 보긴
아쉽지 않나요?

읽은 걸 당신의 업무에 바로 적용해 드립니다. 무료 진단으로 시작하세요.

월 1회, 실전 자동화 한 편

n8n · AI 에이전트 · 워크플로우 케이스를 한 편씩 정리해 이메일로 보내드립니다. 홍보 메일은 없습니다.

언제든 해지 가능 · 스팸 없음