Яндекс метрика Api. Как подключить Яндекс.Метрику к Google Sheets бесплатно, готовый скрипт и пример отчёта

Яндекс метрика Api. Как подключить Яндекс.Метрику к Google Sheets бесплатно, готовый скрипт и пример отчёта

Когда проектов становится много, ручная сборка отчётов отнимает слишком много времени. Хочется всё упростить. Один раз настроить и получать актуальные данные с визуализацией без танцев с бубном и бесконечных фильтров.

Как настроить API Яндекс Метрики

Для работы с Яндекс.Метрикой у вашего аккаунта должен быть открыт доступ к счетчику с правами "Просмотр" и выше.

  1. Перейдите по ссылке: Создать приложение
  2. Заполните поля:
  • Название — любое;
  • Платформа — «Веб-сервисы»;
  • Redirect URI — https://oauth.yandex.ru/verification_code;
  • Доступ к данным — выберите metrika:read (чтение данных счётчиков).
Создание веб приложения в Яндекс ID
Создание веб приложения в Яндекс ID
После сохранения попадаете на эту страницу
После сохранения попадаете на эту страницу

Теперь соберите ссылку для авторизации. Вставляете урл ниже в строку браузера, где вместо <ваш_ClientID> пишете свой после знака "=" без скобок "<>":

https://oauth.yandex.ru/authorize?response_type=token&client_id=<ваш_ClientID>
Перейдите по созданной ссылке, подтвердите доступ.
Перейдите по созданной ссылке, подтвердите доступ.

После подтверждения доступа Яндекс вернёт вам OAuth-токен — сохраните его он будет использовать в скрипте ниже.

Автоматизация отчетов Яндекс Метрики в гугл таблицы через Apps Script

Начнем с минимального функционала - добавление в таблицу данных по визитам, посетителям и по целям (добавил в корзину, оформил заказ, переходы в мессенджер, клик по телефону).

Переходим в Extensions -> Apps Script

Яндекс метрика Api. Как подключить Яндекс.Метрику к Google Sheets бесплатно, готовый скрипт и пример отчёта
Перед копированием скрипта окно ввода нужно очистить
Перед копированием скрипта окно ввода нужно очистить

И вот собственно скрипт, который:

  • автоматически выгружает статистику из нескольких счётчиков Яндекс.Метрики (визиты, цели, доходы и т. д.) за текущий месяц,
  • записывает данные в отдельные листы Google Таблицы,
  • для каждого счётчика создаёт свой лист с наглядной таблицей.

Цели можно можно менять — достаточно изменить их названия и ID в настройках скрипта.

Для каждого счётчика указываем:

– id → номер счётчика в Метрике

– sheetName → имя листа в-таблице, куда писать данные . Название листа в таблице, должно совпадать со значением sheetName в скрипте.

– goals → название цели → её ID (номер цели в метрике)

function fetchMultipleCountersToSheets() { // 1. OAuth-токен Яндекс.Метрики.'y0__' пишем свой токен const TOKEN = 'y0__'; // 2. Счетчики и цели, которые нужно выгрузить. const counters = [ { id: '1111111111', sheetName: 'название листа', goals: { 'Покупка' : '00001', 'Корзина' : '00002', 'Телефон' : '00003', 'Мессенджер' : '00004' } }, { id: '2222222222', sheetName: 'название листа 2 ', goals: { 'Покупка' : '00001', 'Корзина' : '00002', 'Телефон' : '00003', 'Мессенджер' : '00004' } } // по тому же шаблону добавляйте другие счётчики ]; // Период отчёта: c 1-го числа текущего месяца по сегодня. const today = new Date(); const year = today.getFullYear(); const month = today.getMonth(); // 0-based const startDate = Utilities.formatDate(new Date(year, month, 1), Session.getScriptTimeZone(), 'yyyy-MM-dd'); const endDate = Utilities.formatDate(today, Session.getScriptTimeZone(), 'yyyy-MM-dd'); const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); counters.forEach(counter => { const goalIds = counter.goals; // обращаться к ID целей /* 3 Формируем перечень метрик для API – визиты и пользователи – по цели добавляем reaches (достижения) и revenue (доход) – порядок метрик = порядок колонок в таблице */ const metrics = [ 'ym:s:visits', 'ym:s:users', `ym:s:goal${goalIds["Покупка"]}reaches`, `ym:s:goal${goalIds["Покупка"]}revenue`, `ym:s:goal${goalIds["Корзина"]}reaches`, `ym:s:goal${goalIds["Корзина"]}revenue`, `ym:s:goal${goalIds["Телефон"]}reaches`, `ym:s:goal${goalIds["Мессенджер"]}reaches` ]; // запрос к API Метрики const url = `https://api-metrika.yandex.net/stat/v1/data?` + `ids=${counter.id}` + `&metrics=${metrics.join(',')}` + `&dimensions=ym:s:date` + `&date1=${startDate}&date2=${endDate}` + `&accuracy=full&limit=100000`; const options = { method : 'get', headers: { 'Authorization': `OAuth ${TOKEN}` } }; const response = UrlFetchApp.fetch(url, options); const json = JSON.parse(response.getContentText()); /* Создаём/очищаем лист */ let sheet = spreadsheet.getSheetByName(counter.sheetName); if (!sheet) { sheet = spreadsheet.insertSheet(counter.sheetName); } else { sheet.clearContents(); } /Заголовки колонок под наш порядок метрик */ const headers = [ 'Дата', 'Визиты', 'Уникальные пользователи', 'Покупки (шт)', 'Доход от покупок (₽)', 'Добавили в корзину (шт)', 'Потенциальный доход (корзина)', 'Клики по телефону', 'Переходы в мессенджер' ]; sheet.appendRow(headers); /Преобразуем данные API */ const data = json.data.map(row => { const date = row.dimensions[0].name; // yyyy-mm-dd const values = row.metrics; // массив метрик по порядку return [date, ...values]; }); /Сортируем по убыванию даты (сначала свежие) */ data.sort((a, b) => new Date(b[0]) - new Date(a[0])); data.forEach(row => sheet.appendRow(row)); /подпись «Обновлено: …» */ const now = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), 'yyyy-MM-dd HH:mm'); sheet.getRange(sheet.getLastRow() + 2, 1).setValue('Обновлено: ' + now); }); // Запись в журнал Apps Script Logger.log('Данные обновлены для всех счётчиков'); }
Где брать ID цели в Яндекс.Метрике
Где брать ID цели в Яндекс.Метрике

Нажимаем сохранить.

Яндекс метрика Api. Как подключить Яндекс.Метрику к Google Sheets бесплатно, готовый скрипт и пример отчёта
Если есть ошибки - например скопировали токен с пробелом и из-за этого часть кода перенесли на следующую строку,  программа подсветит и не даст сохранить. 
Если есть ошибки - например скопировали токен с пробелом и из-за этого часть кода перенесли на следующую строку, программа подсветит и не даст сохранить. 

При первом запуске потребуется авторизация и разрешение уже от гугла

После подтверждения нажимаем кнопку Run. Если ошибок нет, вы должны увидеть внизу в записях лога надпись - Все данные обновлены.

Успешная работа скрипта
Успешная работа скрипта

Настройка автообновлений в Google Apps Script

Остался финальный шаг — настроить автообновление данных. Переходим в раздел "Триггеры" в редакторе Google Apps Script → нажимаем "Добавить триггер". Выбираем нашу функцию, указываем как часто нужно запускать скрипт (в этом примере это раз в 4 часа), и нажимаем "Сохранить".

Яндекс метрика Api. Как подключить Яндекс.Метрику к Google Sheets бесплатно, готовый скрипт и пример отчёта
пример настройки триггера в Apps Script
пример настройки триггера в Apps Script

Теперь всё работает автоматически. Для каждого счётчика создаётся отдельный лист с таблицей по заданным целям за текущий месяц. Обновление данных происходит раз в 4 часа, а внизу каждой таблицы отображается дата и время последнего обновления.

UPD. Дальше мне захотелось больше данных: добавление источников трафика, показателей конверсии, геоданных, тепловой карты, построения графиков и т.д. Сложность заключалась еще в том, что при обновлении данных старые графики не удалялись, а поверх них каждый раз создавались новые. Мне же нужно было, чтобы под каждый набор данных создавался один актуальный график без затирки вручную заданных стилей на листе. Всё получилось, но это уже на отдельный пост)

Пример расширенного отчёта по данным Яндекс.Метрики в Google Sheets
Пример расширенного отчёта по данным Яндекс.Метрики в Google Sheets

Отдельно про расширение Adveronix для интеграции Яндекс.Метрики в Гугл таблицы

Сперва протестировала бесплатное расширение для Google Таблиц — Adveronix. Оно действительно позволяет без особых заморочек интегрировать данные из Яндекс.Метрики в таблицу. Добавляете расширение, авторизуетесь через Яндекс, выбираете нужные поля — и вот, статистика у вас перед глазами.

Но на этом его преимущества для меня закончились 🙂:

ограничен функционал;

❌нельзя выбрать несколько счётчиков одновременно;

❌ нельзя задать более одной цели для отчёта. Вернее задать можно, но во всех ячейках будет значения только по одной цели.

Поэтому идём другим путём - подключаемся к API Яндекс.Метрики и настраиваем автоматическую выгрузку данных с помощью Google Apps Script :)

Где найти Adveronix после добавления расширения 
Где найти Adveronix после добавления расширения 
метрика в Adveronix
метрика в Adveronix
Примитивная настройки Adveronix и пример отчета в таблице
Примитивная настройки Adveronix и пример отчета в таблице
2
5 комментариев