Разработка · 7 мин чтения

Подключить Google-аккаунт к n8n: OAuth-доступ для Sheets, Drive и Gmail

Каждый workflow в n8n, который трогает Google Sheets, Google Drive или Gmail, начинается с одного и того же шага: подключить Google-аккаунт к n8n через OAuth. Без этого нода Google Sheets не даст выбрать таблицу из списка, а Gmail-триггер вообще не запустится. На практике почти все затыки клиентов на этом этапе связаны не с самим n8n, а с настройками в Google Cloud Console: неверный redirect URI, не включённый API, забытый тестовый пользователь при статусе Testing. Ниже - весь путь от создания проекта в Google Cloud до рабочих credentials в n8n, с разницей между self-hosted и n8n Cloud там, где она реально есть.

Зачем OAuth для Sheets, Drive и Gmail, а не простой API-ключ

API-ключ подходит для публичных данных вроде Google Maps, где Google не важно, чей это запрос. Sheets, Drive и Gmail работают с данными конкретного человека или организации, поэтому Google требует OAuth 2.0: сначала владелец аккаунта явно подтверждает, каким приложениям и с какими правами разрешает действовать от своего имени, и только потом n8n получает токен доступа. Токен привязан к набору scope, то есть к конкретным правам: чтение таблиц отдельно от их редактирования, отправка писем отдельно от чтения входящих.

Похожий принцип разграничения прав использую и в Telegram-ботах на aiogram: бот получает токен доступа только к тем данным, что нужны конкретному сценарию, только там обмен токена на разрешения делаю вручную через код, а в n8n за это отвечает встроенный OAuth2-flow, и вручную писать ничего не нужно.

Отдельный момент, если планируете собирать через Sheets или Gmail контактные данные клиентов - имена, телефоны, почту из заявок. Google Sheets и Gmail работают на серверах за пределами России, а для хранения персональных данных российских граждан закон обязывает использовать серверы в РФ (ст. 18 152-ФЗ). Для CRM-сценариев такие данные лучше вести в базе на своём сервере или в российском сервисе, а Google-сервисы в n8n подключать под задачи без ПДн: отчётность, внутренние таблицы, рассылки без персональных данных получателей в теле письма.

Создаю проект и включаю нужные API в Google Cloud Console

Иду на console.cloud.google.com и создаю новый проект - именно под интеграцию с n8n, отдельно от других сервисов, чтобы не путать квоты и scope между разными задачами. Привязывать платёжный аккаунт на этом шаге не нужно: Sheets, Drive и Gmail API работают в рамках бесплатной квоты, billing требуется только для платных Google Cloud сервисов вроде Vision API или BigQuery, которые к теме не относятся.

Дальше в разделе APIs & Services открываю Library и включаю API под каждый нужный сервис:

Сервис в n8n API в Google Cloud Для чего нужен
Google Sheets Google Sheets API Чтение и запись строк, создание и обновление листов
Google Drive Google Drive API Загрузка и поиск файлов, работа с папками и правами доступа
Gmail Gmail API Отправка писем, чтение входящих, триггер на новое письмо

Включение каждого API занимает около минуты. У всех трёх есть бесплатная квота, которой для типового workflow в n8n хватает с большим запасом: у Sheets API это 300 запросов в минуту на проект, у Gmail API - миллиард условных единиц квоты в сутки. Включать стоит только те API, которые реально используете - лишние scope на этапе consent screen только усложнят проверку приложения Google.

Бесплатный материал

🎁 Полезный скрипт в подарок

Подпишитесь на Telegram - пришлю готовый скрипт по этой теме.

Без спама. Отписка в 1 клик.

В разделе OAuth consent screen выбираю тип External, если это не корпоративный Google Workspace с собственным доменом (тогда доступен Internal, и шаг с верификацией вообще не нужен). Заполняю название приложения, контактный email поддержки и email разработчика - без них Google не даст сохранить форму.

На шаге Scopes добавляю ровно те права, что использую в workflow: .../auth/spreadsheets для Sheets, .../auth/drive или его более узкие варианты для Drive, .../auth/gmail.send и при необходимости .../auth/gmail.readonly для Gmail. Scope для Gmail и Drive Google относит к категории sensitive, а некоторые - к restricted, и для боевого использования с чужими аккаунтами такие scope требуют прохождения верификации приложения - это отдельная процедура на несколько дней с проверкой видео-демонстрации работы приложения.

Для собственного аккаунта или аккаунтов клиента, которые вы сами добавляете, верификация не обязательна: приложение остаётся в статусе Testing, а нужные аккаунты добавляются в список Test users на той же странице. Важный нюанс, который часто ловит клиентов: для неверифицированного приложения с sensitive или restricted scope Google выдаёт refresh token со сроком жизни 7 дней, после чего n8n попросит пройти авторизацию заново. Для тестового контура это нормально, для продакшена - повод либо пройти верификацию, либо использовать только non-sensitive scope там, где это возможно.

Создаю OAuth Client ID и указываю redirect URI из n8n

В разделе Credentials нажимаю Create Credentials и выбираю OAuth client ID, тип приложения - Web application. Здесь важна точность: redirect URI нужно скопировать буквально из окна создания credential в n8n (нода Google Sheets, Google Drive или Gmail, вкладка Create New Credential), а не набрать по памяти. Для n8n Cloud это готовый адрес вида https://ваш-инстанс.app.n8n.cloud/rest/oauth2-credential/callback, для self-hosted - https://ваш-домен/rest/oauth2-credential/callback, где домен берётся из переменной окружения WEBHOOK_URL или N8N_HOST.

Google принимает redirect URI только по HTTPS, кроме localhost для разработки. Если n8n развёрнут на сервере без домена и сертификата, для теста подойдёт временный туннель через ngrok или Cloudflare Tunnel, но для рабочего инстанса домен и HTTPS нужны в любом случае - без этого возвращается ошибка redirect_uri_mismatch ещё до экрана выбора аккаунта. Если поднимать инстанс, домен и HTTPS настраивать самостоятельно некогда, такие проекты беру на настройку n8n под ключ вместе с самим сценарием автоматизации.

Client ID и Client Secret из этого шага копирую в поля credential в n8n, сохраняю и жму «Sign in with Google». Дальше стандартный экран выбора аккаунта Google и подтверждение запрошенных прав.

Проверяю доступ отдельно для Sheets, Drive и Gmail

В n8n у каждого сервиса свой тип credential - Google Sheets OAuth2 API, Google Drive OAuth2 API, Gmail OAuth2 API, даже если Client ID и Secret в Google Cloud общие для всех трёх. Через один и тот же OAuth-клиент можно создать три отдельные credential записи в n8n, каждая пройдёт свою авторизацию и запросит свой набор scope.

Проверяю по очереди: в ноде Google Sheets открываю список Spreadsheet и смотрю, подтягиваются ли таблицы аккаунта - если да, scope на чтение и запись выданы верно. В ноде Gmail отправляю тестовое письмо самому себе через операцию Send. В ноде Google Drive делаю List файлов в корневой папке.

На практике за этими нодами обычно стоит конкретный сценарий: заявки с сайта на Tilda падают в Google Таблицу через вебхук и ноду Sheets, оттуда n8n раскладывает их по менеджерам и шлёт уведомление на Gmail, а копии вложений сохраняет на Drive. Если тестовые операции выше проходят без ошибок авторизации, эти три ноды в связке уже готовы к работе в реальном сценарии.

Типичные ошибки при подключении Google-аккаунта к n8n

  • Error 400: redirect_uri_mismatch - адрес в Google Cloud не совпадает с тем, что показывает n8n, вплоть до лишнего слэша на конце или http вместо https.
  • «Google hasn’t verified this app» - экран блокирует вход, если аккаунт не добавлен в Test users при статусе приложения Testing.
  • access_denied сразу после выбора аккаунта - та же причина: приложение в разработке, а используемый аккаунт не в списке тестовых.
  • Токен перестаёт работать через неделю - для неверифицированного приложения с sensitive-scope это ожидаемое поведение Google, а не сбой n8n.
  • Insufficient Permission после добавления новой ноды - например, к рабочему credential для Sheets позже добавили Gmail: старый токен не расширяет scope сам, credential нужно переавторизовать заново через кнопку Reconnect.
  • Ошибка API not enabled - нужный API просто не включён в Google Cloud Console для этого проекта, решается за минуту в разделе Library.

Если ошибка не про конфигурацию, а про то, что сценарий в целом собирается медленно или падает на других шагах, разбор такого workflow обычно быстрее делать по логам конкретного execution в n8n, а не гадать по общему описанию проблемы.

Частые вопросы

Нужна ли верификация OAuth-приложения Google для продакшена в n8n

Если сценарий работает только с вашим собственным Google-аккаунтом или с аккаунтами клиентов, которые вы сами вручную добавили в Test users, верификация не обязательна - только помните про переавторизацию раз в 7 дней для sensitive-scope. Верификация нужна, если приложение массово подключает чужие аккаунты без вашего участия в настройке каждого из них.

Можно ли подключить несколько Google-аккаунтов в одном workflow n8n

Да, для каждого аккаунта создаётся отдельная credential запись того же типа, например Google Sheets OAuth2 API, и в ноде просто выбирается нужная запись. Client ID и Client Secret при этом можно использовать один и тот же на все credential в проекте.

Что делать, если n8n постоянно просит повторную авторизацию Google

Чаще всего это связано с 7‑дневным сроком жизни refresh token у неверифицированных приложений с sensitive или restricted scope. Решение - пройти верификацию приложения в Google Cloud Console либо перейти на scope без пометки sensitive там, где функциональность сценария это позволяет.

Какие права доступа реально нужны для Sheets, Drive и Gmail в n8n

Для чтения и записи в таблицы достаточно scope spreadsheets, для работы с файлами - drive или более узкий drive.file, если доступ нужен только к файлам, созданным самим приложением. Для Gmail на отправку хватает gmail.send, а для чтения и триггеров на новые письма нужен gmail.readonly или gmail.modify - запрашивайте только то, что реально используете в сценарии.

Есть задача?

Обсудим в мессенджере

Расскажите, что нужно сделать — отвечу в течение 4 часов в рабочее время. Первая консультация бесплатно.

Продолжая пользование настоящим сайтом Вы выражаете своё согласие на обработку Ваших персональных данных (файлов куки) с использованием Yandex.Metrika.
Понятно