발행일: 2026-10-06(화) 11:44
← 목차로 돌아가기|하루 30분 n8n 시리즈 ② 실무 자동화 레시피 100
RECIPE 028

견적 요청 폼 → PDF 견적서 자동 생성 발송

  • ▸Google Docs 또는 HTML 템플릿에 데이터를 자동으로 채워 넣을 수 있다
  • ▸Sheets의 고객 정보를 읽어 개인화된 계약서/견적서를 자동 생성할 수 있다
  • ▸생성된 문서를 PDF로 변환해 이메일로 자동 발송할 수 있다

✅사전 준비

  • □Google Docs 템플릿 작성 (치환할 변수는 {{변수명}} 형식으로 표기)
  • □Google Drive 자격증명 연결 완료
  • □Google Sheets에 고객 데이터 준비 (이름/회사/금액/날짜 등)
  • □Gmail 자격증명 연결 완료

Google Docs 템플릿 변수 치환 — HTTP Request

{
  "requests": [
    {
      "replaceAllText": {
        "containsText": { "text": "{{고객명}}", "matchCase": true },
        "replaceText": "{{ $json.고객명 }}"
      }
    },
    {
      "replaceAllText": {
        "containsText": { "text": "{{계약금액}}", "matchCase": true },
        "replaceText": "{{ $json.계약금액 }}"
      }
    },
    {
      "replaceAllText": {
        "containsText": { "text": "{{계약일}}", "matchCase": true },
        "replaceText": "{{ $now.toFormat('yyyy년 MM월 dd일') }}"
      }
    }
  ]
}

Docs → PDF 변환 — HTTP Request

URL: https://docs.google.com/document/d/{{ $json.documentId }}/export?format=pdf
Method: GET
Authentication: Google OAuth2

→ 응답 바이너리를 Gmail 첨부파일로 바로 연결
💡 TIP템플릿 문서는 원본을 보존하기 위해 Drive 노드의 'Copy File' 기능으로 먼저 복사본을 만든 뒤 치환 작업을 진행하세요. 원본이 덮어씌워지는 실수를 방지할 수 있습니다.
⚡

워크플로우 JSON

아래 JSON을 복사해 n8n에 바로 임포트하세요

📥 n8n 임포트 방법
n8n 화면 우측 상단 메뉴 (⋮) → Import from JSON → 아래 JSON 전체 복사 후 붙여넣기 → Import 클릭
{
  "recipeId": "recipe028",
  "title": "견적 요청 폼 → PDF 견적서 자동 생성 발송",
  "chapter": 3,
  "category": "영업 & 리드 관리 자동화",
  "difficulty": "⭐⭐⭐",
  "estimatedTime": "60분",
  "description": "구글 폼으로 견적 요청이 들어오면 Google Docs 템플릿에 데이터를 자동으로 채워 PDF로 변환 후 고객 이메일로 발송합니다. 내부 영업팀 Slack에도 발송 완료 알림을 보냅니다.",
  "apps": [
    "Google Forms",
    "Google Docs",
    "Gmail",
    "Slack"
  ],
  "nodes": [
    {
      "id": "trigger_sheets",
      "type": "trigger",
      "name": "Google Sheets Trigger - 폼 제출 감지",
      "service": "googleSheets",
      "config": {
        "event": "rowAdded",
        "documentId": "{{ $env.QUOTE_REQUEST_SHEET_ID }}",
        "sheetName": "Form Responses 1"
      }
    },
    {
      "id": "gdocs_fill",
      "type": "action",
      "name": "Google Docs - 견적서 템플릿 채우기",
      "service": "googleDocs",
      "config": {
        "operation": "createFromTemplate",
        "templateId": "{{ $env.QUOTE_TEMPLATE_DOC_ID }}",
        "title": "견적서_{{ $json[\"고객명\"] }}_{{ $now.format(\"YYYYMMDD\") }}",
        "variables": {
          "{{고객명}}": "={{ $json[\"고객명\"] }}",
          "{{서비스종류}}": "={{ $json[\"서비스_종류\"] }}",
          "{{수량}}": "={{ $json[\"수량\"] }}",
          "{{납기일}}": "={{ $json[\"납기일\"] }}",
          "{{발행일}}": "={{ $now.format(\"YYYY년 MM월 DD일\") }}"
        }
      }
    },
    {
      "id": "gdocs_export_pdf",
      "type": "action",
      "name": "Google Docs - PDF 변환",
      "service": "googleDocs",
      "config": {
        "operation": "exportAsPdf",
        "documentId": "={{ $json[\"documentId\"] }}"
      }
    },
    {
      "id": "gmail_send",
      "type": "action",
      "name": "Gmail - 견적서 발송",
      "service": "gmail",
      "config": {
        "to": "={{ $json[\"고객_이메일\"] }}",
        "subject": "견적서 발송 안내 - {{ $json[\"고객명\"] }}님",
        "body": "안녕하세요, {{ $json[\"고객명\"] }}님.\n\n요청하신 견적서를 첨부해 드립니다.\n추가 문의사항이 있으시면 언제든지 연락 주세요.\n\n감사합니다.",
        "attachments": "={{ $json[\"pdfBinary\"] }}"
      }
    },
    {
      "id": "slack_notify",
      "type": "action",
      "name": "Slack - 견적서 발송 완료 알림",
      "service": "slack",
      "config": {
        "channel": "={{ $env.SLACK_SALES_CHANNEL }}",
        "message": "📄 견적서 발송 완료!\n고객: {{ $json[\"고객명\"] }}\n서비스: {{ $json[\"서비스_종류\"] }}\n→ 팔로업 타이밍을 놓치지 마세요!"
      }
    }
  ],
  "connections": [
    {
      "from": "trigger_sheets",
      "to": "gdocs_fill"
    },
    {
      "from": "gdocs_fill",
      "to": "gdocs_export_pdf"
    },
    {
      "from": "gdocs_export_pdf",
      "to": "gmail_send"
    },
    {
      "from": "gmail_send",
      "to": "slack_notify"
    }
  ],
  "envVars": [
    {
      "key": "QUOTE_REQUEST_SHEET_ID",
      "description": "견적 요청 구글 폼 연결 시트 ID"
    },
    {
      "key": "QUOTE_TEMPLATE_DOC_ID",
      "description": "Google Docs 견적서 템플릿 문서 ID"
    },
    {
      "key": "SLACK_SALES_CHANNEL",
      "description": "영업팀 Slack 채널 ID"
    }
  ],
  "qrCodeUrl": "https://www.koreaaitimes.com/books/n8n-vol2/recipe028"
}
← 이전 레시피☰ 목차다음 레시피 →