Google Sheets OAuth2 인증과 행 읽기·업데이트, Gmail 개인화 이메일 발송을 연결해 스프레드시트 기반 배치 이메일 캠페인 자동화를 완성하는 방법을 익힌다.
🎯 학습 목표
이 강을 마치면 다음을 할 수 있습니다.
- Google Sheets OAuth2 인증을 n8n에 설정하고 스프레드시트에 연결합니다.
- Google Sheets 노드로 행을 읽기·추가·업데이트하는 방법을 이해합니다.
- Gmail 노드로 개인화된 이메일을 자동 발송합니다.
- 스프레드시트 기반 배치 이메일 캠페인 워크플로우를 완성합니다.
💡 Google Sheets가 왜 중요한 자동화 연동 대상인가
이 섹션에서는 Google Sheets가 기업 자동화에서 핵심 데이터 소스로 쓰이는 이유를 살펴보겠습니다.
기업의 많은 데이터가 아직 Google Sheets(또는 엑셀)에 있습니다. 고객 연락처 목록, 발송 대상 명단, 재고 현황, 일정 계획, 프로젝트 추적 시트가 여기에 해당합니다. 이런 스프레드시트를 DB로 옮기는 것은 시간이 걸리고 팀원들의 저항도 있습니다. n8n은 Google Sheets를 직접 읽고 쓸 수 있어, 팀이 익숙한 스프레드시트를 유지하면서도 자동화를 도입할 수 있습니다. "엑셀에서 발송 대상 리스트를 관리하고, n8n이 매일 오전 이메일을 자동 발송"하는 패턴이 실무에서 가장 빠르게 성과를 내는 자동화 중 하나입니다.
이메일 자동화도 마찬가지입니다. 이메일 마케팅 도구(Mailchimp 등)는 월 수십만 원의 비용이 들지만, n8n + Gmail 조합은 Google 계정이 있으면 추가 비용 없이 개인화 이메일을 대량 발송할 수 있습니다(단, Gmail에는 일일 발송 한도가 있습니다). 소규모 스타트업이나 개인 사업자에게 특히 유용합니다.
🔐 Google Sheets OAuth2 인증 설정
이 섹션에서는 n8n이 Google 계정에 접근하기 위한 OAuth2 인증을 설정하는 방법을 살펴보겠습니다.
Google Sheets와 Gmail은 단순 API 키가 아닌 OAuth2 인증을 사용합니다. OAuth2는 "n8n이 내 Google 계정에서 특정 권한만 사용하도록 허용"하는 표준 인증 방식입니다. 계정 비밀번호를 직접 넘기는 것보다 안전합니다.
설정 절차는 다음과 같습니다. 먼저 Google Cloud Console에서 프로젝트를 만들고 Google Sheets API와 Gmail API를 활성화합니다. OAuth 동의 화면을 설정하고 OAuth 2.0 클라이언트 ID를 생성합니다. Authorized redirect URIs에 n8n의 OAuth 콜백 URL(https://[n8n-도메인]/rest/oauth2-credential/callback)을 추가합니다. 생성된 클라이언트 ID와 비밀 키를 복사합니다.
n8n에서 Credentials를 추가합니다. "Google Sheets OAuth2"를 검색해 선택합니다. Client ID와 Client Secret을 입력한 뒤 "Sign in with Google"을 클릭합니다. Google 계정 로그인 창이 열리면 접근을 허용합니다. 이 과정이 완료되면 n8n이 해당 Google 계정의 스프레드시트와 Gmail에 접근할 수 있습니다. 같은 Google Credentials를 Google Sheets 노드와 Gmail 노드 모두에서 사용할 수 있습니다.
📊 Google Sheets 노드 — 읽기·추가·업데이트
이 섹션에서는 Google Sheets 노드의 세 가지 핵심 작업을 살펴보겠습니다.
Google Sheets 노드에서 가장 자주 사용하는 Operation을 정리했습니다.
| Operation | 설명 | 필수 설정 |
|---|---|---|
| Read Rows | 시트의 데이터를 행 단위로 읽어 items 배열로 반환 | Spreadsheet ID, Sheet Name, Range |
| Append Row | 시트 하단에 새 행 추가 | Spreadsheet ID, Sheet Name, 필드-열 매핑 |
| Update Row | 기존 행의 특정 열 값 변경 | Row Number 또는 필터 조건 |
| Delete Row | 행 삭제 | Row Number |
Read Rows를 설정할 때 Spreadsheet ID는 스프레드시트 URL에서 찾을 수 있습니다. https://docs.google.com/spreadsheets/d/[여기가 ID]/edit 형식입니다. Sheet Name은 시트 탭 이름(기본값: "Sheet1")입니다. Range를 지정하지 않으면 해당 시트의 모든 데이터를 읽습니다. 첫 번째 행이 헤더인 경우 "Header Row"를 활성화하면, 각 열이 헤더 이름을 키로 사용해 자동 매핑됩니다.
Append Row에서는 "Fields to Send" 옵션으로 보낼 필드를 지정합니다. 이전 노드의 아이템 필드가 시트의 열 헤더와 같은 이름이면 자동 매핑됩니다. 예를 들어 아이템에 name, email, createdAt 필드가 있고 시트 헤더도 같으면, 그대로 행이 추가됩니다.
Update Row는 특정 행을 업데이트합니다. 업데이트할 행을 찾는 방법은 두 가지입니다. 행 번호를 직접 지정하거나, "Match Row" 옵션으로 특정 열 값과 일치하는 행을 찾아 업데이트합니다. 예를 들어 이메일 주소로 행을 찾아 "발송 여부" 열을 "Y"로 업데이트합니다.
📧 Gmail 노드로 개인화 이메일 발송
이 섹션에서는 Gmail 노드로 수신자별 개인화 이메일을 자동 발송하는 방법을 살펴보겠습니다.
Gmail 노드의 Operation을 "Send"로 설정합니다. To 필드에 {{ $json.email }}처럼 아이템의 이메일 주소를 참조합니다. Subject와 Message에도 표현식으로 개인화 내용을 삽입합니다.
개인화 이메일의 HTML Body 예시를 살펴보겠습니다.
<h2>안녕하세요, {{ $json.name }}님</h2>
<p>{{ $json.company }}를 이용해주셔서 감사합니다.</p>
<p>귀하의 주문 #{{ $json.orderId }}가 {{ $json.shippingDate }}에 배송될 예정입니다.</p>
<p>배송 주소: {{ $json.address }}</p>
이처럼 수신자의 이름, 회사명, 주문 정보 등을 동적으로 삽입하면 각 이메일이 개인화되어 오픈율이 높아집니다. Gmail 노드에서 "HTML" 옵션을 활성화해야 HTML 형식 이메일이 발송됩니다.
Gmail의 일일 발송 한도에 대해 알아두어야 합니다. Gmail 개인 계정은 하루 약 500건, Google Workspace 계정은 하루 약 2,000건까지 발송 가능합니다. 더 많은 발송이 필요하면 Mailgun, Resend, SendGrid 같은 전용 이메일 서비스를 연동해야 합니다. n8n은 이들 서비스 모두 노드로 지원합니다.
💻 실전: 스프레드시트 기반 배치 이메일 캠페인
이 섹션에서는 고객 명단 스프레드시트를 읽어 이메일을 자동 발송하고 결과를 기록하는 실전 워크플로우를 살펴보겠습니다.
시나리오: "발송 여부" 열이 비어 있는 고객에게만 이메일을 발송하고, 발송 후 해당 열을 "Y"로 업데이트합니다. 오류 발생 고객은 "오류" 열에 사유를 기록합니다.
워크플로우 구성은 다음과 같습니다. Schedule Trigger(매일 오전 10시) → Google Sheets Read(전체 목록 읽기) → Code 노드(발송 여부 빈 행만 필터링) → SplitInBatches(크기 10) → Gmail 발송 노드(개인화 이메일) → Wait(1초, 발송 속도 제어) → Google Sheets Update(해당 행에 발송 여부 "Y" 업데이트).
Code 노드에서 필터링하는 코드:
return $input.all().filter(item =>
!item.json['발송여부'] || item.json['발송여부'].trim() === ''
);
Gmail 발송 후 Google Sheets Update 노드에서 "Match by Column" 옵션으로 이메일 주소를 기준으로 행을 찾아 "발송여부" 열을 "Y"로, "발송시각" 열을 {{ $now.setZone('Asia/Seoul').toFormat('yyyy-MM-dd HH:mm') }}로 업데이트합니다. Error Output 핀을 활성화해 오류 발생 시 "오류사유" 열에 에러 메시지를 기록합니다. 이 워크플로우를 반복 실행해도 이미 발송된 고객에게는 중복 발송되지 않습니다.
📝 핵심 요약
| 작업 | 노드 | 핵심 팁 |
|---|---|---|
| 인증 설정 | Google OAuth2 Credentials | Cloud Console에서 API 활성화 + Redirect URI 등록 필수 |
| 데이터 읽기 | Google Sheets (Read Rows) | Header Row 활성화 시 열 이름으로 자동 매핑 |
| 행 업데이트 | Google Sheets (Update Row) | Match by Column으로 이메일 등 고유 키 기준 업데이트 |
| 이메일 발송 | Gmail (Send) | HTML 활성화, 개인화 표현식 삽입, 일일 한도 주의 |
| 중복 방지 | Code 노드 필터 + Update | 발송 여부 플래그로 멱등성 보장 |
다음 강에서는 서브워크플로우를 살펴봅니다. 여러 워크플로우에서 공통으로 사용하는 로직을 별도 워크플로우로 분리해 재사용하는 모듈화 설계를 배우면, 대규모 자동화 시스템을 효율적으로 구성할 수 있습니다.
관련 주제
- Google Sheets OAuth2
- 행 읽기 업데이트
- Gmail 개인화 발송
- 배치 이메일 캠페인
- AI 기술
- AI 기술 강의
- n8n + AI 워크플로우 설계법 20강
- 무료강의
- 무료 온라인 강의
- NUGUNA
- 누구나
댓글
불러오는 중...
