n8n 한국어 교재 · Ch.8

Google Sheets 연동 — 읽기·쓰기

스프레드시트는 비공식 데이터베이스. n8n 으로 시트에 자동 행 추가, 또는 시트의 데이터를 읽어 다른 흐름으로 — OAuth 한 번 설정하면 평생 작동.

Google Sheets 시트의 행 데이터 시각화 — 이름·이메일·금액 열

n8n 통합 노드 중 가장 자주 쓰이는 게 Google Sheets. 이유는 간단 — 누구나 시트를 쓰고, 데이터 잠시 모아두기에 시트만큼 편한 게 없습니다. Webhook 으로 들어온 데이터를 시트에 자동 누적하거나, 매일 9시 시트 검토 후 새 행만 Slack 으로 — 이 두 패턴이 95%.

Google Sheets 노드의 두 작업 — 쓰기 / 읽기

작업n8n 노드 Operation예시
행 추가Append RowWebhook 으로 들어온 결제 정보 누적
여러 행 추가Append or Update Rows100건 batch 업로드
전체 읽기Get Rows매일 9시 시트 전체 검토
특정 행 검색Lookup이메일로 사용자 정보 찾기
행 업데이트Update Row상태 컬럼만 "처리완료" 로

가장 흔한 패턴은 Append Row (누적) 와 Get Rows (전체 읽기). 이 두 개만 익혀두면 거의 모든 시나리오 처리.

1단계 — Google Sheets 노드 추가

격리 인스턴스에서 'What happens next?' 패널의 google sheets 검색 결과 — 첫 항목 Google Sheets 노드
이전 노드의 + 클릭 → "google sheets" 검색 → 첫 결과 클릭. 좌측 캔버스에 Manual Trigger 가 이미 있는 상태.
1
트리거 다음 단계로 검색

Manual Trigger·Schedule·Webhook 어느 트리거 다음에든 OK. 트리거 노드 우측의 + 표시 → 검색창에 google sheets → 결과 클릭.

2
Operation 선택 — Append 또는 Get

노드 추가하면 어떤 작업을 할지 물어요. 처음 익힐 땐:

  • Append Row in Sheet — 새 행 추가
  • Get Row(s) in Sheet — 행 읽기

각각 하나씩 만들어보는 게 학습 순서.

2단계 — OAuth credentials 설정 (한 번만)

Google Sheets 는 Google 계정 권한이 필요해서 OAuth 인증을 거칩니다. n8n 이 도와주긴 하는데, 첫 한 번은 절차가 있어요.

1
노드 패널에서 Credential to connect with

- Create new credential 클릭. 두 인증 방식 중 선택:

  • Google Sheets OAuth2 API — 일반 사용자에게 권장. 브라우저로 Google 로그인 한 번.
  • Service Account — 서버용. Google Cloud Console 에서 키 파일 받아 등록.
2
셀프호스팅인 경우 — Redirect URI 등록

셀프호스팅 n8n 은 Google Cloud Console 에서 OAuth client 직접 만들어야 합니다.

# Google Cloud Console → APIs & Services → Credentials 1. Create Credentials → OAuth client ID 2. Application type: Web application 3. Authorized redirect URIs 에 n8n 의 URL 추가: https://your-n8n-domain.com/rest/oauth2-credential/callback 4. Client ID 와 Client Secret 받기 → n8n 에 붙여넣기

n8n Cloud 사용자는 이 절차 생략 — Cloud 가 자체 OAuth client 가 있어서 그냥 "Connect my account" 한 번.

3
Sign in with Google → 권한 허용

브라우저 팝업 → 자신의 Google 계정으로 로그인 → "n8n이 Sheets 에 접근하려 합니다" 동의. 한 번만 하면 credentials 저장돼서 다른 워크플로에서도 재사용.

3단계 — Append Row 실전 예제

Webhook 으로 들어온 결제 정보를 시트에 자동 누적하는 워크플로:

Webhook (POST /payment) ↓ body: { name: "박준성", amount: 50000, plan: "Pro" } Google Sheets (Append Row) - Document: 결제로그.xlsx - Sheet: Sheet1 - Columns: 이름: ={{ $json.body.name }} 금액: ={{ $json.body.amount }} 플랜: ={{ $json.body.plan }} 시각: ={{ $now.toFormat("yyyy-MM-dd HH:mm") }}

실행하면 시트의 마지막 행 아래로 자동 추가. Columns 매핑이 자동 — 시트 첫 행의 헤더와 같은 이름의 필드만 자동 배정. 더 정확히 하려면 매핑 모드 Map Each Column Manually 선택.

흔한 실수 — Document 선택 시
시트 URL 을 그대로 붙여넣지 말고, 노드의 Document 드롭다운에서 본인 계정의 시트 목록을 골라야 합니다. URL 붙여넣기는 일부 케이스에서 실패. 또 시트 이름 한국어가 들어가면 시트 ID 모드로 바꿔서 입력 권장.

4단계 — Get Rows 로 시트 읽기 + 필터링

반대 방향 — 시트에서 데이터를 가져와 다른 곳으로:

Schedule (매일 9시) ↓ Google Sheets (Get Rows) - Operation: Get Row(s) in Sheet - Filters: 상태 = "미발송" ↓ 미발송 행들이 items 로 변환 Send Email (Run Once For Each Item) - To: ={{ $json.이메일 }} - Subject: ={{ "안녕 " + $json.이름 + "님" }}

Get Rows 의 Filters 옵션이 핵심. 전체 다 받지 말고 미발송 행만 가져오면 효율 ↑. n8n 이 시트 컬럼 이름 자동 감지해서 드롭다운으로 컬럼 선택 가능.

실무 팁 — Send Email 후 같은 행의 "상태" 컬럼을 "발송완료" 로 업데이트하는 노드를 마지막에 두면 다음 날 9시 실행 때 중복 발송 방지. Update Row 노드 + Row Number 매칭으로 구현.

다음 Ch.9 에서는 메일 자동 발송 — Gmail (OAuth) 와 SMTP (서비스 메일) 두 길의 차이, 첨부파일 처리, HTML 메일 템플릿까지 다룹니다.

n8n 한국어 교재 · Ch.8 완료

다음 편 → Ch.9 Gmail · SMTP 자동 발송

전체 시리즈 보기

© 2026 주나이테크(주) @JUNAITECH