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

Gmail → Яндекс Диск через n8n: сохранение вложений, фильтры и защита от дублей

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

AI summary: AI-friendly Problem/Solution-мануал: как автоматически сохранять вложения Gmail на Яндекс Диск через n8n, фильтровать письма, раскладывать файлы по папкам, не дублировать вложения и уведомлять команду.
Шаблон для внедрения

Импортируйте workflow, замените credentials и прогоните тестовый payload до включения production.

Проблема: вложения из Gmail легко теряются в переписке, скачиваются вручную и дублируются в разных папках. Это особенно больно для счетов, актов, договоров и документов от поставщиков.

Решение: сделать workflow Gmail → Яндекс Диск через n8n: отфильтровать письма, извлечь вложения, собрать безопасный путь, проверить dedupe key и отправить уведомление команде.

Схема workflow Gmail attachments to Yandex Disk в n8n
Файлы сохраняются с понятной структурой папок и ключом дедупликации.

Проблема: почему вложения из Gmail теряются в переписке

Счета, акты, коммерческие предложения и закрывающие документы часто приходят в Gmail как вложения. Пока их вручную скачивает бухгалтер или менеджер, часть файлов остаётся в цепочках писем, попадает в разные папки или загружается дважды. Автоматизация через n8n решает эту боль: письмо фильтруется, вложение сохраняется на Яндекс Диск, а команда получает ссылку и понятный статус.

Страница закрывает конкретный интент “Gmail вложения в Яндекс Диск через n8n”, а не общую тему email automation. Здесь важны фильтры, структура папок, безопасные имена файлов и повторная обработка одного письма.

Архитектура workflow Gmail → Яндекс Диск

НодаРольЧто проверить
Gmail triggerПолучает новые письмаQuery, label, unread/read policy
Extract attachmentsЗабирает binary файлыРазмер, MIME type, несколько вложений
Build pathСоздаёт путь на Яндекс ДискеДата, отправитель, безопасное имя
Check dedupeНе грузит файл повторноmessage_id + filename + size
Upload to Yandex DiskСохраняет файлOAuth/WebDAV, overwrite policy

Контракт данных письма и вложений

Для тестов удобно передавать сокращённый JSON письма. В реальном workflow Gmail node отдаст binary data, но бизнес-логика пути и дедупликации остаётся такой же.

{
  "message_id": "18f4a9d7c2",
  "from": "supplier@example.ru",
  "subject": "Счет и акт за май",
  "date": "2026-05-30T09:15:00Z",
  "attachments": [
    { "filename": "invoice-10492.pdf", "mimeType": "application/pdf", "size": 184920 },
    { "filename": "act-10492.pdf", "mimeType": "application/pdf", "size": 122400 }
  ],
  "folder": "suppliers"
}

Code Node: путь файла, dedupe key и безопасное имя

Code Node ниже превращает письмо в массив файлов для upload. Он чистит символы, которые ломают пути, и формирует dedupe key, чтобы повторный запуск не создавал копии вида invoice (1).pdf.

const msg = $json;
const messageId = String(msg.message_id ?? msg.id ?? '').trim();
if (!messageId) throw new Error('Gmail message_id is required for dedupe');

const from = String(msg.from ?? 'unknown').replace(/[<>:"/\|?*]+/g, '_').slice(0, 80);
const subject = String(msg.subject ?? 'no-subject').replace(/[<>:"/\|?*]+/g, '_').slice(0, 100);
const date = new Date(msg.date ?? Date.now()).toISOString().slice(0, 10);
const baseFolder = String(msg.folder ?? 'inbox').replace(/[^A-Za-zА-Яа-я0-9._-]+/g, '_');

const attachments = Array.isArray(msg.attachments) ? msg.attachments : [];
return attachments.map((file, index) => {
  const original = String(file.filename ?? `attachment-${index + 1}`).replace(/[<>:"/\|?*]+/g, '_');
  return { json: {
    message_id: messageId,
    dedupe_key: `gmail:${messageId}:${original}:${file.size ?? 0}`,
    yandex_path: `/n8n/${baseFolder}/${date}/${from}/${original}`,
    original_filename: original,
    mime_type: file.mimeType ?? 'application/octet-stream',
    size: file.size ?? 0,
    title: `${subject} — ${original}`
  }};
});
Как выбрать фильтр Gmail

Начните с узкого query: has:attachment from:supplier@example.ru newer_than:7d. После проверки расширяйте фильтр по label или домену. Не запускайте workflow сразу на всю историю ящика.

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

В архив добавлены workflow JSON и payload. После импорта замените Gmail credential, токен Яндекс Диска, базовую папку и правило фильтрации писем.

{
  "name": "Nodbot - Gmail attachments to Yandex Disk",
  "nodes": [
    { "name": "Gmail trigger", "type": "n8n-nodes-base.gmailTrigger", "purpose": "Получать новые письма по фильтру" },
    { "name": "Extract attachments", "type": "n8n-nodes-base.gmail", "purpose": "Забрать binary вложения" },
    { "name": "Build Yandex path Code", "type": "n8n-nodes-base.code", "purpose": "Собрать путь, имя файла и dedupe key" },
    { "name": "Upload to Yandex Disk", "type": "n8n-nodes-base.httpRequest", "purpose": "Загрузить файл через WebDAV/REST" },
    { "name": "Notify result", "type": "n8n-nodes-base.telegram", "purpose": "Сообщить о сохранении или ошибке" }
  ],
  "connections": "Gmail → Extract → Build path → Upload → Notify"
}

Пошаговая настройка Gmail, n8n и Яндекс Диска

  1. Создайте отдельный Gmail label для писем, которые нужно обрабатывать.
  2. Настройте Gmail trigger или IMAP Read node с фильтром has:attachment.
  3. Добавьте Code Node для безопасного имени файла и структуры папок.
  4. Подключите upload на Яндекс Диск через WebDAV или REST API.
  5. Сохраняйте dedupe key в таблицу/БД и отправляйте короткий Telegram-отчёт.

Тесты вложений, фильтров и повторов

curl -X POST "https://YOUR-N8N-DOMAIN/webhook/gmail-attachments-to-yandex-disk"   -H "Content-Type: application/json"   --data @gmail-attachments-to-yandex-disk-payload.json
  • Письмо с двумя PDF должно создать два файла в одной папке.
  • Повторная обработка того же message_id не должна грузить дубли.
  • Файл с кириллицей и пробелами должен получить безопасный путь.
  • Письмо без вложений должно завершаться без ошибки и без алерта.
  • Ошибка upload должна попадать в Error Workflow или Telegram alert.

Production-риски файловой автоматизации

  • Workflow обрабатывает всю историю. Можно случайно загрузить тысячи старых вложений и упереться в лимиты.
  • Overwrite включён без контроля. Новый файл может затереть старый документ с тем же именем.
  • Нет дедупликации. Gmail trigger или ручной retry создаёт копии документов.
  • Токен Яндекс Диска в тексте ноды. Храните секреты в credentials/ENV.
  • Нет политики персональных данных. Вложения могут содержать договоры, паспорта и реквизиты.

Полезные ссылки и документация

Смотрите также: Error Workflow с Telegram-алертом, Безопасное хранение ENV, Retry и DLQ для HTTP Request. Официальная документация: Gmail API guides, Yandex Disk API, n8n binary data.

Пример сохраненных Gmail вложений на Яндекс Диске через n8n

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

  1. Фильтр Gmail выбирает только нужные письма с вложениями.
  2. Каждый файл получает предсказуемый путь: категория, дата, отправитель, имя.
  3. Повторный запуск по тому же письму не создаёт дубль.
  4. Ошибки upload видны в Telegram или Error Workflow.
  5. Команда знает, какие типы файлов можно хранить на Яндекс Диске и кто владелец папки.
Нужно разобрать почту без ручной рутины?

Nodbot настроит Gmail/IMAP → Яндекс Диск, фильтры, dedupe, алерты и безопасное хранение вложений под вашу структуру документов.

Автоматизировать вложения