API Yandex метрики и работа с шаблонами
Переносим информацию из Yandex.Метрику на наш сайт, используя API Метрики и готовые шаблоны
Al-Sher
Всем привет! Сегодня я хочу рассказать про интеграцию Вашего сайта с Яндекс.Метрикой. Использовать, конечно же, мы будем их оффициальное API, доступное по адресу https://tech.yandex.ru/metrika/doc/api2/api_v1/. Примеры в самом низу ✌
Начало
Перед использованием API данного сервиса, нам необходимо поставить счетчик метрики на сайт, а так же получить OAuth-токен, с помощью которого и будут отправляться запросы к API. Получить счетчик можно на сайте Яндекс.метрики, мы же перейдем сразу к получению нашего токена. Изначально нам требуется создать приложение в яндексе. Сделать это можно тут. Вам необходимо указать имя приложения, а так же выбрать правило Получение статистики, чтение параметров своих и доверенных счётчиков, расположенное в пункте Яндекс.Метрика. Так же нам еще нужно указать Callback. Воспользуемся кнопкой "Подставить URL для разработки". Создаем наше приложение и идём получать токен по следующей ссылке https://oauth.yandex.ru/authorize?response_type=token&client_id=[ID], где [ID] - id вашего приложения. При переходе по ссылке Вам будет показан уникальный токен. Сохраняем его.
Использование шаблонов
Все запросы к API Яндекс.Метрики передаются на https://api-metrika.yandex.ru/stat/v1/data.[TYPE]?id=[ID]&oauth_token=[TOKEN], где [TYPE] - тип получаемых данных(json, csv), [ID] - id счетчика, [TOKEN] - Ваш токен, полученный раннее. Самый простой способ работы с API Яндекс.Метрики - использовать готовые шаблоны. Найти их можно в официальном API, ну а мы, для начала, рассмотрим некоторые параметры для них.
Начальная и конечная дата.
Для установки начальной/конечной даты нам необходимо передать параметры date1/date2 соответственно. Дату необходимо передавать в формате Ymd.
Группировка информации по дню/неделе/месяцу.
API позволяет нам группировать информацию по промежуткам времени за один запрос. Полезная функция, не придется создавать запрос на каждую дату ?. Для установки группировки используется параметр group, в котором передается day/week/month/quartet/year. Таким образом мы разделим нашу информацию на день/неделю/месяц/квартал/год соответственно.
Примеры
Пример 1. Поисковые фразы.
Давайте, например, попробуем получить информацию по поисковым словам. Для этого нам нужен шаблон sources_search_phrases, разделять информацию по дням не будем.
var_dump(file_get_contents('https://api-metrika.yandex.ru/stat/v1/data?id=[ID]&preset=sources_search_phrases&date1='.date('Ymd',mktime(0,0,0,date('n',time()),date('j',time())-7,date('Y',time()))).'&date2='.date('Ymd',mktime(0,0,0,date('n',time()),date('j',time()),date('Y',time()))).'&oauth_token=[TOKEN]'));
Разберем запрос. Мы получаем информацию в формате json(по-умолчанию). id счетчика равен [ID]. Используем шаблон sources_search_phrases(параметр preset). Начальная дата равна 7 дням назад, конечная дата равна текущей. Токен равен [TOKEN]. В результате мы получим json массив. В массиве query содержится информация по запросу. Нам она не нужна. А вот в массиве data содержится уже вся информация по поисковым фразам. Массив data состоит из трех других массивов:
- dimensions - основная информация(сама фраза, url страницы поиска, поисковая система)
- metrics - информация по счетчикам. Там содержится информация по метрикам, например количество посетителей. В каком порядке указаны данные можно посмотреть в массиве query['metrics'] (данные находятся в соответствующем порядке)
Пример 2. Количество посетителей за неделю.
Теперь рассмотрим шаблон traffic, позволяющий узнать количество посетителей/просмотров. Так же мы попробуем сгруппировать всю информацию по дням, то есть воспользуемся group=day.
var_dump(file_get_contents('https://api-metrika.yandex.ru/stat/v1/data?id=[ID]&preset=traffic&group=day&date1='.date('Ymd',mktime(0,0,0,date('n',time()),date('j',time())-7,date('Y',time()))).'&date2='.date('Ymd',mktime(0,0,0,date('n',time()),date('j',time()),date('Y',time()))).'&oauth_token=[TOKEN]'));
Разберем запрос. По сути запрос очень похож на предыдущий: всё тот же токен и id метрики, так же получаем информацию за неделю. Однако из изменений можно отметить такие моменты, как preset=traffic, то есть использование шаблона traffic, а так же group=day, то есть группировка по суткам. В результате мы так же получим json массив, который так же состоит из query и data. Перейдем сразу к разбору массива data. Он состоит из 7 других массивов, каждый из которых соответствует определенной дате. В массиве dimensions содержится информация о дате, а в массиве metrics - полученные метрики. То есть, чтобы получить информацию о посетителях за сегодня нам нужно обратиться к data[0]['metrics'][1].
Пример 3. Гео данные.
Давайте попробуем еще получить информацию о гео данных пользователей, то есть узнаем, откуда к нам приходили гости. В этот раз мы не будем группировать данные, а так же не укажем начальную и конечную дату.
var_dump(file_get_contents('https://api-metrika.yandex.ru/stat/v1/data?id=[ID]&preset=geo_country&oauth_token=[TOKEN]'));
Тут мы снова получим данные в формате JSON за неделю. Рассмотрим массив data['dimensions']. Тут у нас хранится информация о месте нахождении посетителя, то есть страна, область, город. В массиве data['metrics'] мы получим информацию о визитах, посетителях, отказах, глубине просмотра и времени на сайте соответственно. В случае, если какую-либо информацию получить не удалось, вместо неё будет содержаться null.
Заключение
На этом я хочу закончить рассмотрение шаблонов Яндекс.Метрики, как и эту заметку. Надеюсь, что информация окажется полезной.
Кстати, если вдруг вы хотите получить информацию в csv, вместо json, то замените в запросе data на data.csv. Спасибо за внимание
Arsen
Спасибо тебе огромное за эту статейку! Очень помог. Два дня убил на это. У Яндекса документация такая, что запутаешься даже в том, что уже знал)))