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

Интеграция Google Drive и n8n: загрузка файлов, права доступа, дедупликация и архив

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

AI summary: Problem/Solution-гайд по Google Drive и n8n: как принимать документы из форм и почты, раскладывать по папкам, проверять тип/размер, не создавать дубли и безопасно выдавать доступ.
Готовый blueprint для внедрения

Импортируйте JSON в n8n, замените credentials, URL API, поля CRM/БД и лимиты под вашу инфраструктуру.

Проблема: Файлы из заявок, почты и CRM часто складываются в одну папку, теряют связь с клиентом, получают публичный доступ или дублируются при повторной отправке.

Решение: строить интеграцию Google Drive и n8n как документный конвейер: проверять MIME type и размер, считать ключ дедупликации, выбирать папку по business context, загружать файл и назначать права только нужным ролям.

Схема интеграции Google Drive и n8n для загрузки документов с проверкой прав доступа
Схема показывает путь файла от входного события до загрузки в папку и выдачи прав.

Проблема: почему простой upload в Google Drive не решает документооборот

Простой upload работает до тех пор, пока файлов мало. В production появляются счета, акты, резюме, сканы договоров и вложения из разных источников. Без маршрутизации по папкам и связки с entity_id менеджер не знает, какой файл к какому клиенту относится.

Отдельный риск — доступы. Если workflow выставляет anyoneWithLink для всех документов, в публичную ссылку могут попасть персональные данные. Поэтому правила доступа должны зависеть от типа файла и процесса.

Архитектура workflow Google Drive + n8n для документов

БлокЗадачаProduction-проверка
Webhook / Email inputполучает файл и metadataentity_id, source, filename
Validate fileпроверяет MIME type и sizeblocklist, max_mb, required fields
Build dedupe keyсчитает ключ по entity_id+filename+sizeнет повторной загрузки
Choose folderвыбирает папку по типу документаclient, invoices, HR, legal
Upload to Driveзагружает файл в нужную папкуOAuth, folder_id, retry
Set permissionsвыдаёт доступ по ролине ставить public по умолчанию

Для юридических и финансовых документов лучше хранить не только fileId, но и source_url/entity_id. Это помогает восстановить контекст при споре или аудите.

Контракт файла и метаданных

{
  "entity_id": "deal-5581",
  "source": "gmail",
  "document_type": "invoice",
  "filename": "invoice-10492.pdf",
  "mime_type": "application/pdf",
  "size_bytes": 428312,
  "folder_hint": "clients/acme",
  "requested_access": [
    "finance@example.ru",
    "manager@example.ru"
  ]
}

entity_id связывает файл с клиентом, сделкой, задачей или заказом. Без него Google Drive становится складом файлов без бизнес-смысла.

Code Node: проверка MIME type, размера и ключа дедупликации

const src = $json.body ?? $json;
const filename = String(src.filename ?? '').trim();
const mime = String(src.mime_type ?? src.mimeType ?? '').toLowerCase();
const size = Number(src.size_bytes ?? src.size ?? 0);
const entityId = String(src.entity_id ?? '').trim();
if (!entityId) throw new Error('entity_id is required for Drive document flow');
if (!filename) throw new Error('filename is required');
if (size > 25 * 1024 * 1024) throw new Error(`File too large: ${size}`);
const allowed = ['application/pdf','image/jpeg','image/png','application/vnd.openxmlformats-officedocument.wordprocessingml.document'];
if (!allowed.includes(mime)) throw new Error(`Unsupported MIME type: ${mime}`);
const safeName = filename.replace(/[\/:*?"<>|]+/g, '-').replace(/\s+/g, ' ').trim();
const type = String(src.document_type ?? 'other').toLowerCase();
const folder = type === 'invoice' ? 'finance' : type === 'resume' ? 'hr' : type === 'contract' ? 'legal' : 'incoming';
return [{ json: {
  entity_id: entityId,
  original_filename: filename,
  safe_filename: safeName,
  mime_type: mime,
  size_bytes: size,
  folder_key: folder,
  dedupe_key: `drive:${entityId}:${safeName}:${size}`,
  permissions: Array.isArray(src.requested_access) ? src.requested_access : []
}}];
Почему нельзя по умолчанию давать доступ по ссылке

Google Drive удобен, но публичная ссылка часто переживает проект, сотрудника и CRM-карточку. Для документов с персональными или финансовыми данными лучше выдавать доступ конкретным аккаунтам или группам.

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

Скачать готовый workflow JSON Скачать тестовый payload

{
  "name": "Nodbot - Google Drive document flow with dedupe",
  "nodes": [
    {
      "name": "Webhook file input",
      "type": "n8n-nodes-base.webhook",
      "purpose": "Получить файл и metadata"
    },
    {
      "name": "Validate file metadata",
      "type": "n8n-nodes-base.code",
      "purpose": "Проверить тип, размер, entity_id"
    },
    {
      "name": "Check dedupe key",
      "type": "n8n-nodes-base.if",
      "purpose": "Не загружать дубль"
    },
    {
      "name": "Upload to Google Drive",
      "type": "n8n-nodes-base.googleDrive",
      "purpose": "Загрузить файл"
    },
    {
      "name": "Set permissions",
      "type": "n8n-nodes-base.googleDrive",
      "purpose": "Выдать доступ"
    },
    {
      "name": "Respond",
      "type": "n8n-nodes-base.respondToWebhook",
      "purpose": "Вернуть fileId и ссылку"
    }
  ],
  "connections": "Webhook file input → Validate file metadata → Check dedupe key → Upload to Google Drive → Set permissions → Respond"
}

Пошаговая настройка Google Drive folders, OAuth и n8n

  1. Создайте service folders: finance, hr, legal, incoming.
  2. Настройте Google OAuth credential с минимальными правами.
  3. Импортируйте workflow JSON и замените folder_id для каждого folder_key.
  4. Добавьте durable storage для dedupe_key, если файлы приходят параллельно.
  5. Проверьте правила permissions на тестовых аккаунтах.

Тесты перед production

curl -X POST "https://YOUR-N8N-DOMAIN/webhook/integration-google-drive-n8n-docflow" \
  -H "Content-Type: application/json" \
  --data @integration-google-drive-n8n-docflow-payload.json
  1. PDF до лимита загружается в finance и получает fileId.
  2. Файл без entity_id отклоняется.
  3. Повтор filename+entity_id+size не создаёт дубль.
  4. Unsupported MIME type блокируется до upload.
  5. Права выдаются только указанным пользователям.

Production-риски

  • Публичные ссылки по умолчанию. Документы могут утечь за пределы команды.
  • Нет entity_id. Файл невозможно связать с CRM или задачей.
  • Дедупликация только по имени. Разные версии договора перетираются или блокируются неверно.
  • Большие файлы в executions. n8n storage быстро разрастается.
  • Нет архивации. Удаление из папки ломает историю сделки.
Карточка результата Google Drive docflow с fileId, папкой и доступами
Пример результата: файл загружен, связан со сделкой и получил контролируемые права.

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

  1. Для каждого файла сохраняется entity_id, fileId и dedupe_key.
  2. MIME type и размер проверяются до upload.
  3. Папка выбирается по бизнес-типу документа.
  4. Права доступа не становятся публичными без явного правила.
  5. Ошибки Drive API уходят в alert или DLQ.
Нужен безопасный документооборот на Google Drive?

Nodbot настроит Google Drive + n8n: маршрутизацию по папкам, dedupe, проверку типов, контроль доступов, связь с CRM и мониторинг ошибок.

Обсудить Drive-автоматизацию