RECIPE 052
Google Forms 응답 → 이메일 자동 발송 + Sheets 기록
- ▸Google Forms 신규 응답 감지 시 확인 이메일 자동 발송
- ▸응답 데이터를 Google Sheets에 자동 저장
- ▸관리자에게 일일 요약 리포트 발송
✅사전 준비
- □Google Forms + 연결된 Sheets 스프레드시트 준비
- □Google OAuth2 자격증명 설정
- □Gmail 발송 권한 확인
- □Sheets 헤더 행 구성 완료
트리거 설정 (Google Sheets Trigger)
Node: Google Sheets Trigger
Event: Row Added
Spreadsheet ID: YOUR_SPREADSHEET_ID
Sheet Name: 시트1
Poll Interval: 1분확인 이메일 템플릿
제목: [확인] {{ $json['이름'] }}님의 응답이 접수되었습니다
안녕하세요, {{ $json['이름'] }}님!
아래 내용으로 응답이 정상 접수되었습니다.
- 제출 일시: {{ $now.toFormat('yyyy-MM-dd HH:mm') }}
- 이메일: {{ $json['이메일'] }}
- 문의 내용: {{ $json['내용'].slice(0, 100) }}...
빠른 시일 내에 답변 드리겠습니다.
감사합니다.💡 TIPGoogle Forms 응답은 연결된 Sheets에 자동 기록되므로, n8n에서는 Sheets Trigger를 사용하는 것이 가장 안정적입니다.
⚡
워크플로우 JSON
아래 JSON을 복사해 n8n에 바로 임포트하세요
📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
"recipeId": "recipe052",
"title": "서류 합격자 → 면접 일정 자동 조율 이메일",
"chapter": 5,
"category": "HR & 조직 운영 자동화",
"difficulty": "⭐⭐",
"estimatedTime": "35분",
"usedApps": [
"Google Sheets",
"Calendly",
"Gmail"
],
"description": "지원자 시트에서 상태가 '서류합격'으로 변경되면 합격 안내 이메일과 Calendly 면접 예약 링크를 자동 발송하고, 예약 완료 시 채용팀 Slack에 알림을 보냅니다.",
"nodes": [
{
"id": "trigger_sheets",
"type": "trigger",
"service": "Google Sheets",
"name": "서류합격 상태 변경 감지",
"config": {
"event": "rowUpdated",
"spreadsheetId": "{{$env.RECRUIT_SHEET_ID}}",
"sheetName": "지원자목록",
"watchColumn": "상태",
"watchValue": "서류합격"
}
},
{
"id": "send_pass_email",
"type": "action",
"service": "Gmail",
"name": "합격 안내 + 면접 예약 링크 발송",
"config": {
"operation": "sendEmail",
"to": "{{$json['이메일']}}",
"subject": "[{{$env.COMPANY_NAME}}] {{$json['포지션']}} 서류 전형 합격을 축하드립니다!",
"body": "안녕하세요, {{$json['이름']}}님!\n\n{{$env.COMPANY_NAME}} {{$json['포지션']}} 포지션 서류 전형에 합격하셨습니다. 🎉\n\n아래 링크에서 편하신 면접 일정을 선택해 주세요.\n일정 선택 후 자동으로 면접 확정 안내가 발송됩니다.\n\n📅 면접 일정 선택하기:\n{{$env.CALENDLY_INTERVIEW_URL}}\n\n선택 기한: 안내 수신 후 3일 이내\n\n궁금하신 사항은 언제든지 회신 주세요.\n{{$env.COMPANY_NAME}} 채용팀 드림"
}
},
{
"id": "update_status",
"type": "action",
"service": "Google Sheets",
"name": "상태 업데이트",
"config": {
"operation": "updateRow",
"spreadsheetId": "{{$env.RECRUIT_SHEET_ID}}",
"sheetName": "지원자목록",
"rowNumber": "{{$json['rowIndex']}}",
"columns": {
"상태": "면접일정조율중",
"합격통보일": "{{$now.format('YYYY-MM-DD')}}"
}
}
},
{
"id": "trigger_calendly",
"type": "trigger",
"service": "Webhook",
"name": "Calendly 예약 완료 수신",
"config": {
"httpMethod": "POST",
"path": "/calendly-interview",
"description": "Calendly Webhook에 이 URL을 등록하세요"
}
},
{
"id": "notify_recruit_team",
"type": "action",
"service": "Slack",
"name": "채용팀 면접 예약 알림",
"config": {
"operation": "sendMessage",
"channel": "{{$env.RECRUIT_SLACK_CHANNEL}}",
"message": "📅 면접 일정이 확정되었습니다!\n\n👤 지원자: {{$json['payload']['invitee']['name']}}\n💼 포지션: {{$json['payload']['event_type']['name']}}\n📅 면접 일시: {{$json['payload']['event']['start_time']}}\n📧 이메일: {{$json['payload']['invitee']['email']}}\n\n👉 캘린더에서 확인하세요!"
}
}
],
"edges": [
{
"from": "trigger_sheets",
"to": "send_pass_email"
},
{
"from": "send_pass_email",
"to": "update_status"
},
{
"from": "trigger_calendly",
"to": "notify_recruit_team"
}
],
"tips": [
"Calendly에서 면접관별 전용 링크를 만들어두면 포지션에 따라 다른 링크를 자동으로 삽입할 수 있어요.",
"면접 예약 완료 시 지원자에게도 '면접 확정 안내' 이메일을 Gmail 노드로 추가 발송하면 더욱 프로페셔널한 인상을 줄 수 있어요.",
"3일 이내 미예약 지원자에게 리마인더를 보내려면 Wait 노드(3일) 후 시트 상태를 확인하는 분기를 추가하세요."
],
"qrUrl": "www.koreaaitimes.com/books/n8n-vol2/recipe052"
}