Перейти к содержанию

Интеграция Google Docs и n8n: документы по шаблону с approval и PDF

Обновлено: 2026-05-30

AI summary: Problem/Solution-гайд по Google Docs и n8n: как генерировать документы по шаблону, не ломать placeholders, контролировать права доступа, approval и PDF/export.
Готовый blueprint для внедрения

Импортируйте JSON в n8n, замените credentials, IDs, правила доступа и production-политики под вашу инфраструктуру.

Проблема: AI или CRM могут быстро создать документ, но без шаблона, версионирования и approval команда получает кривые договоры, открытые ссылки и PDF с неправильными реквизитами.

Решение: Google Docs и n8n нужно использовать как управляемый document pipeline: входной контракт, копия шаблона, замена placeholders, review-статус, экспорт PDF и запись ссылки обратно в CRM. Такой подход закрывает не демонстрационный happy path, а реальную production-боль: повторы, права доступа, пустые поля, API-ошибки и ручной контроль там, где автоматизация может навредить.

Схема интеграции Google Docs и n8n для генерации документа по шаблону
Схема показывает путь события через n8n: нормализация, проверка, действие во внешнем сервисе и audit/alert.

Проблема: почему простая связка ломает процесс

Интеграция нужна не ради факта подключения сервиса к n8n. Пользователь ищет конкретный ответ: как настроить сценарий так, чтобы данные не дублировались, права не были избыточными, а результат можно было проверить без ручного расследования execution logs.

Для этой страницы основной объект — Google Docs document. Входной контракт должен явно фиксировать template_id, customer_id, placeholders, approver_email, drive_folder_id. Если эти поля приходят нестабильно, автоматизация начинает угадывать, а угадывание в production почти всегда превращается в дубли, потерю данных или лишние уведомления.

Поэтому workflow строится вокруг детерминированных проверок: сначала validation и idempotency, потом запрос к API, потом запись результата и только после этого уведомление человека или downstream-системы.

Архитектура workflow для n8n

БлокЗадачаProduction-проверка
Webhook / CRM triggerполучает заявку на документесть template_id и customer_id
Validate fieldsпроверяет placeholders и обязательные значениянет пустых реквизитов
Copy templateсоздаёт копию Google Docs в нужной папкеправа не наследуются случайно
Replace placeholdersзаполняет шаблон даннымивсе {{field}} заменены
Approval gateотправляет ссылку на reviewвнешняя отправка только после approval
Export PDF + update CRMэкспортирует PDF и пишет ссылки обратноесть doc_id, pdf_file_id, status

Такой workflow удобно сопровождать: каждая нода отвечает за один слой ответственности, а не смешивает mapping, API-запрос, retry и уведомления в одном Code Node.

Контракт входных данных

{
  "template_id": "1TEMPLATE_DOC_ID",
  "customer_id": "cust-1042",
  "document_type": "commercial_offer",
  "title": "Коммерческое предложение Acme",
  "approver_email": "manager@example.com",
  "drive_folder_id": "1FOLDER_ID",
  "fields": {
    "client_name": "ООО Акме",
    "amount": "129 000 ₽",
    "deadline": "2026-06-15",
    "manager": "Ирина Петрова"
  }
}

Payload можно расширять, но нельзя делать обязательные поля “по настроению”. Если источник не передал внешний ID, timezone, владельца или другой ключевой атрибут, workflow должен остановиться с понятной ошибкой до записи во внешний сервис.

Code Node: нормализация, mapping и guard-условия

const src = $json.body ?? $json;
if (!src.template_id) throw new Error('template_id is required');
if (!src.drive_folder_id) throw new Error('drive_folder_id is required');
const fields = src.fields ?? {};
const placeholders = Object.fromEntries(
  Object.entries(fields).map(([key, value]) => [`{{${key}}}`, String(value ?? '').trim()])
);
for (const [placeholder, value] of Object.entries(placeholders)) {
  if (!value) throw new Error(`Empty value for ${placeholder}`);
}
const documentKey = `docs:${src.document_type}:${src.customer_id}:${src.title}`;
return [{
  json: {
    action: 'copy_template_replace_placeholders_export_pdf',
    idempotency_key: documentKey,
    template_id: src.template_id,
    drive_folder_id: src.drive_folder_id,
    title: String(src.title ?? 'Документ').trim(),
    approver_email: src.approver_email,
    placeholders,
    permissions: { role: 'reader', type: 'user', emailAddress: src.approver_email },
    audit: { customer_id: src.customer_id, document_type: src.document_type }
  }
}];

Этот скрипт n8n не заменяет бизнес-логику внешнего сервиса. Его задача — привести данные к стабильному контракту, сформировать idempotency key и не пропустить опасный payload дальше по цепочке.

Готовый workflow JSON: скачать и импортировать

В архиве страницы есть импортируемый workflow JSON и тестовый payload. После импорта замените credentials, URL, IDs, папки, владельцев, лимиты и правила доступа. Не запускайте сценарий на production-данных, пока не проверены повторы, пустые значения и ошибки API.

{
  "name": "Nodbot - Google Docs template document with approval and PDF export",
  "nodes": [
    {
      "name": "Webhook / CRM trigger",
      "type": "n8n-node",
      "purpose": "получает заявку на документ"
    },
    {
      "name": "Validate fields",
      "type": "n8n-node",
      "purpose": "проверяет placeholders и обязательные значения"
    },
    {
      "name": "Copy template",
      "type": "n8n-node",
      "purpose": "создаёт копию Google Docs в нужной папке"
    },
    {
      "name": "Replace placeholders",
      "type": "n8n-node",
      "purpose": "заполняет шаблон данными"
    },
    {
      "name": "Approval gate",
      "type": "n8n-node",
      "purpose": "отправляет ссылку на review"
    },
    {
      "name": "Export PDF + update CRM",
      "type": "n8n-node",
      "purpose": "экспортирует PDF и пишет ссылки обратно"
    }
  ],
  "connections": "Webhook / CRM trigger → Validate fields → Copy template → Replace placeholders → Approval gate → Export PDF + update CRM"
}
Скачать и проверить: используйте кнопки в начале статьи, затем прогоните curl и сравните результат с audit-log.

Пошаговая настройка связки

  1. Создайте master-template в Google Docs и запретите ручное редактирование структуры placeholders.
  2. Опишите список обязательных полей: клиент, сумма, срок, менеджер, юридические реквизиты.
  3. В n8n копируйте шаблон в production-папку Google Drive перед заменой переменных.
  4. Добавьте approval-ветку: документ можно отправлять клиенту только после проверки человеком.
  5. После approval экспортируйте PDF и сохраняйте doc_id/pdf_file_id в CRM или таблицу документов.
Что проверить после импорта workflow

Откройте каждую ноду, замените credentials и IDs, включите dry-run там, где доступно, затем выполните сценарий на тестовом объекте. Для write-действий добавьте отдельный флаг approval или manual step.

Тесты перед production

Минимальный smoke test:

curl -X POST "https://YOUR-N8N-DOMAIN/webhook/google-docs-template-n8n" -H "Content-Type: application/json" --data @integration-google-docs-n8n-docgen-payload.json
  1. payload без обязательного поля
  2. placeholder есть в шаблоне, но нет в JSON
  3. повторный customer_id/title
  4. approval declined
  5. ошибка Drive permissions

Отдельно проверьте, что retry n8n не создаёт второй объект во внешнем сервисе. Для критичных действий используйте durable storage: Postgres, CRM custom field, Google Sheet mapping или другой слой с уникальным ключом.

Production-риски

  • Шаблон меняют вручную и ломают placeholders.
  • Документ расшаривается по ссылке anyone with link.
  • AI-черновик уходит клиенту без approval.
  • PDF экспортируется до финального review.
  • doc_id не записывается в CRM, и повтор создаёт новую копию.
Карточка результата Google Docs document с doc_id, PDF и approval status
Визуальный блок результата помогает быстро понять, что именно должно появиться после успешного запуска.

Внутренняя перелинковка помогает быстро перейти от общего integration-гайда к готовым workflow, а внешние ссылки ведут на официальную документацию API и n8n-нод.

Критерии готовности

  1. Все placeholders проверяются до создания документа.
  2. Права доступа минимальны и не открывают документ публично.
  3. Есть статус draft/review/approved/exported.
  4. CRM хранит doc_id и pdf_file_id.
  5. Ошибки Google API и permission denied уходят в alert.
Нужно внедрить без риска? Nodbot может собрать production workflow под вашу инфраструктуру: credentials, mapping, idempotency, тесты, monitoring, LLM-разметка и понятный runbook для команды.