Как агентству собрать отчёт по всем рекламным кабинетам: Директ, Google MCC, BigQuery
У рекламного агентства десятки клиентов, и у каждого — свои кабинеты в Яндекс Директе и Google Ads. Чтобы агентство видело общую картину — расход, клики, конверсии, стоимость лида по всем проектам сразу, — данные нужно собрать из всех кабинетов в одном месте. Вручную это часы рутины каждый месяц: открыть каждый кабинет, выгрузить, свести в таблицу, пересчитать.
Мы автоматизировали это для собственной агентской отчётности и разбираем архитектуру по шагам — честно, чтобы вы могли повторить её у себя (или мы настроим под вас). Продаём не картинку дашборда, а рабочий конвейер данных под ней.
В чём сложность
- → Яндекс Директ. Доступ к статистике идёт по токену на каждый аккаунт. Токенов много, их нужно где-то хранить и удобно обновлять.
- → Google Ads. Аккаунты клиентов разрознены — авторизоваться в каждом по отдельности неудобно и не масштабируется.
- → Объединение. У Директа и Google Ads разные названия площадок, кампаний, валют. Чтобы сравнивать проекты, данные надо привести к одной модели.
Шаг 1. Панель аккаунтов в Google Sheets
Для Яндекс Директа мы получаем OAuth-токен на каждый аккаунт и храним их в обычной Google-таблице — это простая панель управления, с которой работает агентство. Строка = один клиент: название, токен, регион, признак «активен». Подключить нового клиента — добавить строку; отключить — снять галочку. Никакого кода для этого не нужно, всё в знакомом интерфейсе таблицы.
Шаг 2. Google Ads — через управляющий аккаунт (MCC)
Кабинеты клиентов в Google Ads привязываются к управляющему аккаунту (MCC). Это одна точка доступа ко всем аккаунтам под ним: добавили кабинет в управляющий аккаунт — он попал в отчётность, удалили — выпал. Не нужно заводить отдельную авторизацию под каждого клиента: скрипт ходит в API от имени управляющего аккаунта и обходит все дочерние.
Шаг 3. Выгрузка по расписанию — Python + GitHub Actions
Python-скрипты обходят все аккаунты (токены Директа из таблицы, дочерние аккаунты из управляющего аккаунта Google), обращаются к API рекламных систем и выгружают статистику. Запуск — автоматически по расписанию через GitHub Actions: без своих серверов и без ручного старта. Схематично, цикл выглядит так:
# упрощённо: обход всех аккаунтов из панели
for account in accounts_from_sheet():
token = account["token"] # токен Директа из Google Sheets
rows = yandex_direct_report(token, date_from, date_to)
load_to_bigquery(rows, client=account["client"])
for customer in google_ads_children(mcc_id): # дочерние аккаунты MCC
rows = google_ads_report(customer, date_from, date_to)
load_to_bigquery(rows, client=customer.name)
А запуск по расписанию задаётся в одном файле воркфлоу:
name: ads-report
on:
schedule:
- cron: "0 6 * * *" # каждый день в 06:00 UTC
jobs:
collect:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: python collect.py
Код приведён схематично — как публичный паттерн работы с API. Точная реализация зависит от источников и структуры вашей отчётности.
Шаг 4. Объединение данных — BigQuery + SQL
Все выгрузки складываются в единое хранилище Google BigQuery. SQL-запросы приводят кабинеты к общей модели и размечают данные по клиентам — так видно и один проект, и всё агентство целиком. Заодно считаются производные показатели (CPC, CPA, CR, CTR, ДРР) и сравнения периодов.
-- Единая витрина расходов по всем кабинетам клиентов
SELECT client, 'Яндекс Директ' AS source, date, campaign,
cost, clicks, impressions, conversions
FROM `ads.yandex_direct`
UNION ALL
SELECT client, 'Google Ads', date, campaign,
cost, clicks, impressions, conversions
FROM `ads.google_ads`;
Шаг 5. Дашборд агентства — Looker Studio
Поверх BigQuery — дашборд в Looker Studio: все клиенты агентства в одном окне, с фильтрами по клиенту, датам и площадкам. Состав показателей и дизайн собираются индивидуально под задачи агентства — это уже вопрос оформления. Как это выглядит и вся архитектура целиком — в кейсе «Отчёт рекламного агентства».
А коннекторов Looker не хватит?
На одном-двух аккаунтах — хватит. Но на десятках кабинетов родные коннекторы упираются в лимиты, не хранят историю так, как нужно, и не дают считать собственные показатели и сравнения. Свой конвейер с хранилищем в BigQuery масштабируется на любое число клиентов, держит историю и остаётся под вашим контролем. Это и есть разница между «картинкой» и рабочей BI-системой.
Вывод
Агентский отчёт по всем кабинетам — это не про красивый дашборд, а про рабочий конвейер данных под ним: панель аккаунтов, сбор по API на расписании, объединение в BigQuery, визуализация. Один раз настроил — дальше данные собираются сами, а команда занимается рекламой и ростом, а не выгрузками.
Настроим сбор со всех кабинетов клиентов, объединение в BigQuery и сводный дашборд.
Частые вопросы
Как собрать отчёт сразу по десяткам клиентских кабинетов? +
Как показать каждому клиенту только его данные? +
Хотите так же — но в своём проекте?
Бесплатно посмотрим вашу рекламу и аналитику и покажем, где теряются заявки. Без обязательств.
Кейсы, разборы и новости digital — без воды.