<!-- source: https://nodbot.ru/integrations/google-drive/; markdown: /llms/pages/generated/integrations-google-drive.md; type: IntegrationGuide -->
---
title: "Google Drive и n8n: документы без потерь | Nodbot"
source_url: "https://nodbot.ru/integrations/google-drive/"
canonical_url: "https://nodbot.ru/integrations/google-drive/"
language: "ru"
content_type: "IntegrationGuide"
section: "integrations"
generated_at: "2026-05-30"
word_count_source: 927
---

## AI summary

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

## Best used for

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

## Key topics

- Google Drive
- n8n
- file upload
- folder routing
- sharing permissions
- dedupe key
- document workflow
- OAuth
- документооборот

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

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

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

- Проблема и сценарии внедрения

- Архитектура интеграции

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

- Code Node и нормализация

- Готовый workflow JSON

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

- Тесты перед production

- Production-риски

- Полезные ссылки

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

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

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


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

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

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


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

| Блок | Задача | Production-проверка |

| --- | --- | --- |

| Webhook / Email input | получает файл и metadata | entity_id, source, filename |

| Validate file | проверяет MIME type и size | blocklist, 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. Это помогает восстановить контекст при споре или аудите.


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

```json
{
  "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, размера и ключа дедупликации

```javascript
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

```json
{
  "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

- Создайте service folders: finance, hr, legal, incoming.

- Настройте Google OAuth credential с минимальными правами.

- Импортируйте workflow JSON и замените folder_id для каждого folder_key.

- Добавьте durable storage для dedupe_key, если файлы приходят параллельно.

- Проверьте правила permissions на тестовых аккаунтах.


## Тесты перед production

```bash
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
```

- PDF до лимита загружается в finance и получает fileId.

- Файл без entity_id отклоняется.

- Повтор filename+entity_id+size не создаёт дубль.

- Unsupported MIME type блокируется до upload.

- Права выдаются только указанным пользователям.


## Production-риски

- Публичные ссылки по умолчанию. Документы могут утечь за пределы команды.

- Нет entity_id. Файл невозможно связать с CRM или задачей.

- Дедупликация только по имени. Разные версии договора перетираются или блокируются неверно.

- Большие файлы в executions. n8n storage быстро разрастается.

- Нет архивации. Удаление из папки ломает историю сделки.


## Полезные ссылки и смежные материалы

- Google Drive API overview

- n8n Google Drive node

- Gmail attachments workflow

- Gmail и n8n

- S3/MinIO и n8n


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

- Для каждого файла сохраняется entity_id, fileId и dedupe_key.

- MIME type и размер проверяются до upload.

- Папка выбирается по бизнес-типу документа.

- Права доступа не становятся публичными без явного правила.

- Ошибки Drive API уходят в alert или DLQ.

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