---
title: "Gmail вложения в Яндекс Диск через n8n | Nodbot"
source_url: "https://nodbot.ru/workflows/gmail-attachments-to-yandex-disk/"
canonical_url: "https://nodbot.ru/workflows/gmail-attachments-to-yandex-disk/"
language: "ru"
content_type: "WorkflowTemplate"
section: "workflows"
generated_at: "2026-05-30"
word_count_source: 1009
---

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

## AI summary

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

## Best used for

Полноценный Problem/Solution-мануал для внедрения в n8n: импортировать workflow JSON, настроить API/файлы/мониторинг, выполнить production-тесты и передать решение команде.

## Table of contents

- Проблема: почему вложения из Gmail теряются в переписке
- Архитектура workflow Gmail → Яндекс Диск
- Контракт данных письма и вложений
- Code Node: путь файла, dedupe key и безопасное имя
- Готовый workflow JSON: скачать и импортировать
- Пошаговая настройка Gmail, n8n и Яндекс Диска
- Тесты вложений, фильтров и повторов
- Production-риски файловой автоматизации
- Полезные ссылки и документация
- Критерии готовности

## Key topics

- Gmail attachments
- Yandex Disk
- n8n binary data
- deduplication
- file automation
- email workflow

## Source outline

Gmail → Яндекс Диск через n8n: сохранение вложений, фильтры и защита от дублей ¶ Обновлено: 2026-05-30 AI summary: AI-friendly Problem/Solution-мануал: как автоматически сохранять вложения Gmail на Яндекс Диск через n8n, фильтровать письма, раскладывать файлы по папкам, не дублировать вложения и уведомлять команду. Шаблон для внедрения Скачать workflow JSON Скачать test payload Скопировать curl Импортируйте workflow, замените credentials и прогоните тестовый payload до включения production. Содержание Проблема: почему вложения из Gmail теряются в переписке Архитектура workflow Gmail → Яндекс Диск Контракт данных письма и вложений Code Node: путь файла, dedupe key и безопасное имя Готовый workflow JSON: скачать и импортировать Пошаговая настройка Gmail, n8n и Яндекс Диска Тесты вложений, фильтров и повторов Production-риски файловой автоматизации Полезные ссылки и документация Критерии готовности Проблема: вложения из Gmail легко теряются в переписке, скачиваются вручную и дублируются в разных папках. Это особенно больно для счетов, актов, договоров и документов от поставщиков. Решение: сделать workflow Gmail → Яндекс Диск через n8n: отфильтровать письма, извлечь вложения, собрать безопасный путь, проверить dedupe key и отправить уведомление команде. Файлы сохраняются с понятной структурой папок и ключом дедупликации. Проблема: почему вложения из 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, токен Яндекс Диска, базовую папку и правило фильтрации писем. Скачать готовый workflow JSON Скачать тестовый payload { "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 и Яндекс Диска ¶ Создайте отдельный Gmail label для писем, которые нужно обрабатывать. Настройте Gmail trigger или IMAP Read node с фильтром has:attachment . Добавьте Code Node для безопасного имени файла и структуры папок. Подключите upload на Яндекс Диск через WebDAV или REST API. Сохраняйте 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 выбирает только нужные письма с вложениями. Каждый файл получает предсказуемый путь: категория, дата, отправитель, имя. Повторный запуск по тому же письму не создаёт дубль. Ошибки upload видны в Telegram или Error Workflow. Команда знает, какие типы файлов можно хранить на Яндекс Диске и кто владелец папки. Нужно разобрать почту без ручной рутины? Nodbot настроит Gmail/IMAP → Яндекс Диск, фильтры, dedupe, алерты и безопасное хранение вложений под вашу структуру документов. Автоматизировать вложения

## Test payload

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

## Key implementation snippet

```javascript
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}`
  }};
});
```

## Importable workflow structure

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

## Retrieval hints

- Использовать HTML как canonical source.
- Markdown удобен для LLM-ответов, извлечения workflow-контракта, кода и чеклистов.
- Для ссылок пользователю отдавать canonical URL.
