Выгрузка Яндекс.Директ в Google-таблицу через Apps Script: устройство, лимиты и альтернативы
Если вы когда-нибудь пытались собрать в одном месте все данные по рекламным кампаниям в Яндекс.Директе, то знаете: штатный Мастер отчётов выдаёт только один срез за запрос. Чтобы сравнить расход по площадкам, нужен один отчёт, для понедельной динамики стоимости лида — второй, для анализа просадки ка

Если вы когда-нибудь пытались собрать в одном месте все данные по рекламным кампаниям в Яндекс.Директе, то знаете: штатный Мастер отчётов выдаёт только один срез за запрос. Чтобы сравнить расход по площадкам, нужен один отчёт, для понедельной динамики стоимости лида — второй, для анализа просадки кампании — третий. А если у вас несколько клиентских аккаунтов, добавляются ещё перелогины. Целостная картина всего аккаунта в такой схеме существует только в голове аналитика, и каждое утро её приходится пересобирать заново. Автору статьи это мешало настолько, что он потратил вечер и вытащил данные напрямую из Reports API в Google-таблицу. Один лист — весь аккаунт по неделям, рядом разрезы по площадкам и по каждой кампании, плюс подневное скользящее окно. Обновляется автоматически через Apps Script. Ниже разберём, как это устроено под капотом, где у конструкции стенки (их хватает) и почему свои боевые дашборды автор в итоге всё равно унёс в DataLens.
Как устроен скрипт для выгрузки Директа в Google Sheets
В основе решения лежит вызов Reports API Яндекс.Директа из Apps Script. Скрипт авторизуется через сервисный аккаунт, формирует запрос с нужными полями (расход, клики, конверсии, цена цели и т. д.) и разбивкой по неделям, площадкам и кампаниям. Полученные данные записываются на отдельные листы таблицы: один лист — агрегированные показатели по всему аккаунту, второй — разрез по площадкам, третий — по кампаниям, четвёртый — подневное скользящее окно за последние 30 дней. Скрипт запускается по триггеру раз в сутки, например, в 6 утра. Автор предусмотрел механизм дозаписи: если данные за какой-то период уже есть, скрипт обновляет только новые строки, чтобы не плодить дубликаты. Всё это работает на пустом шаблоне таблицы, который автор выложил в открытый доступ — можно скопировать и адаптировать под свои нужды.
Почему Мастер отчётов не подходит для комплексной аналитики?
Мастер отчётов в Яндекс.Директе — удобный инструмент для разового анализа, но он не позволяет одновременно видеть разные срезы данных. Например, чтобы сравнить расход по площадкам и понедельную динамику стоимости лида, нужно формировать два отдельных отчёта. А если вы ведёте несколько аккаунтов, каждый требует отдельного входа и настройки. В результате аналитик тратит время на ручную сборку данных, а не на анализ. Google Apps Script решает эту проблему, автоматически подтягивая данные из API и сводя их в одну таблицу. Однако, как выяснилось, у такого подхода есть жёсткие лимиты, которые делают его малопригодным для больших объёмов данных.
Какие ограничения у скрипта на Apps Script?
Главная проблема — квота на время выполнения скрипта. В бесплатном аккаунте Apps Script скрипт может работать не более 6 минут за один запуск. Если у вас много кампаний (например, больше 50) или вы запрашиваете данные за длинный период (больше года), скрипт просто не успевает обработать все данные за отведённое время. Автор столкнулся с этим, когда попытался выгрузить данные за два года по 150 кампаниям — скрипт падал с ошибкой тайм-аута. Второе ограничение — лимит на количество запросов к API. Reports API Яндекс.Директа имеет свои квоты: не более 50 запросов в минуту и 10 000 запросов в сутки. Для одного аккаунта это не критично, но если вы обслуживаете несколько клиентов, лимит может быть исчерпан. Кроме того, сам Google Sheets имеет ограничение на количество ячеек (10 миллионов) и на частоту записи — не более 60 операций в минуту. Третье — отсутствие гибкой фильтрации. Скрипт выгружает все данные по аккаунту, и если нужно исключить какие-то кампании или типы площадок, приходится дописывать логику фильтрации уже на стороне таблицы, что неудобно.
Как обойти лимит времени выполнения Apps Script?
Чтобы уложиться в 6 минут, автор оптимизировал скрипт: разбил выгрузку на несколько запусков (по одному на каждый лист) и использовал пакетную запись через setValues(), а не построчную. Это сократило время, но не решило проблему полностью. Для аккаунтов с большим количеством кампаний или длительной историей скрипт всё равно нестабилен. Альтернатива — использовать платные аккаунты Apps Script с увеличенными квотами или перейти на другие инструменты, такие как DataLens.
Технические подробности: как работает Reports API и Apps Script
Reports API Яндекс.Директа возвращает данные в формате JSON. Скрипт формирует POST-запрос с телом, содержащим поля отчёта (например, Date, CampaignName, Clicks, Cost, Conversions), группировку (по неделям или дням) и фильтры. Ответ приходит в виде строки с разделителями (TSV), которую скрипт парсит и раскладывает по ячейкам. Автор использовал сервисный аккаунт для авторизации — это стандартный способ для server-to-server интеграций. Ключ хранится в свойствах скрипта, что относительно безопасно. Для обновления данных скрипт проверяет, есть ли уже запись за данную дату и кампанию, и если есть — обновляет её, если нет — добавляет новую строку. Основная сложность — уложиться в 6 минут. Автор оптимизировал скрипт: разбил выгрузку на несколько запусков (по одному на каждый лист) и использовал пакетную запись через setValues(), а не построчную. Это сократило время, но не решило проблему полностью.
Кого затронет и как
Разработчики и аналитики, которые самостоятельно настраивают отчётность по Директу, могут сэкономить вечер, скопировав готовый шаблон. Однако стоит учитывать, что для аккаунтов с большим количеством кампаний (больше 50) или длительной историей (больше года) скрипт будет нестабилен. Автор рекомендует использовать его только для быстрого прототипирования или для небольших аккаунтов. Владельцы малого бизнеса, которые ведут 10–20 кампаний, вполне могут обойтись этим решением — оно бесплатно и не требует специальных знаний. Но для агентств с десятками клиентов лучше сразу смотреть в сторону DataLens или платных сервисов. Российский контекст: DataLens — это бесплатный инструмент от Яндекса, который не имеет ограничений по времени выполнения и поддерживает прямую интеграцию с Директом. Автор в итоге перешёл на него, и это логичный выбор для тех, кто работает в экосистеме Яндекса.
Что будет дальше
Автор не планирует развивать скрипт — он выложил его как есть, в качестве референса. Вероятно, сообщество доработает его: например, добавит поддержку инкрементальной выгрузки без дублирования или интеграцию с Telegram для уведомлений. Но основной тренд — уход от Apps Script в сторону DataLens или собственных бэкендов на Python, которые не имеют жёстких лимитов. Для тех, кто хочет попробовать, ссылка на пустой шаблон таблицы приведена в конце статьи. Скрипт открыт, его можно модифицировать под свои задачи. Главное — помнить про 6 минут.
Итог
Скрипт на Apps Script — неплохой способ быстро собрать данные Директа в Google-таблицу, но он упирается в ограничения бесплатного аккаунта. Для небольших объёмов данных это рабочее решение, для серьёзной аналитики лучше сразу использовать DataLens или аналоги. Главный вывод: не тратьте время на костыли, если есть готовые бесплатные инструменты.