На случай, если захочется потестить - ссылка на GitHub. Не, я понимаю, что лениво ставить ruby на свою винду, но это ведь (насколько слышал, давно ведь не пользую Windows, да и она меня тоже) всего несколько секунд. Зато потом сколько удовольствия... никого не хочу обидеть, всегда рад случаю в очередной раз повозиться с API Yandex.Metrica, но вот веб-интерфейсы Метрики и Рекламной Сети Яндекса, имхо, ну очччень медленные... кое-где в регионах, коллеги говорят, вообще порой не грузятся.
Похоже, поторопился я с оценкой Windows и "всего несколькими секундами": доходят стороной слухи, что на M$ все по-прежнему не радужно. Подробнее см. в комментариях.
Внимание. Описанные далее действия имеют смысл при одном условии: в Метрике должна быть включена опция Показывать отчеты по РСЯ.
API у Яши действительно во всех отношениях супер, грех не использовать. Так что пока вот так. Потом чего-нибудь добавлю или урежу, подрефакторю, etc, а сейчас следующим образом:
Устанавливаем ruby.
После чего необходимо установить четыре джема, необходимые скрипту для работы:
- require 'dotenv/load'
- require 'typhoeus'
- require 'json'
- require 'terminal-table'
Соответственно:
gem install dotenv
, и остальные три так же. Далее переходим в директорию проекта, находим там скрытый файл .env, который редактируем, ведя ID своего счетчика Яндекс Метрика и токен доступа,
Внимание. Получение токена доступа подробно описано в материале Получаем отладочный токен на OAuth-сервере Яндекса.
Вы можете проверить ваш токен на этой страничке, получив посредством API Яндекс Метрика статистику вашего сайта за вчерашний или сегодняшний дни. Приложение не собирает никаких данных, впрочем, если не верите, после теста сгенерируйте токен заново.
Сразу затем уже можно запускать магию:
ruby src/start.rb
Скрипт попросит ввести две даты, начало и конец интересующего вас отчетного периода (после каждого ввода жмем Enter). Сразу после чего в консоль будет выведен перечень страниц событий Рекламной Службы Яндекса, количество визитов постранично и расчетный по ним доход, в конце таблицы (в скрин не влезло) - общая сумма дохода за указанный период.
Для длинных url установлено ограничение (срезается начало, чтоб табличка не рушилась) в 100 знаков, что легко, при желании, может быть изменено:
obj['data'].each do |i|
rows << [i['dimensions'][0]['name'].split(//).last(100).join, i['metrics'][0].to_i, i['metrics'][2].round(2)]
end
Все "получаемые" из API Yandex.Metrica таким образом "деньги" - это float, в силу чего округляем до второго после запятой знака, имея на выходе рубли и копейки. Например:
puts 'Total: ' + obj['totals'][2].round(2).to_s
В запросе к API Yandex.Metrica используем следующие параметры:
params = {
'ids' => ENV['IDS_METRIKA'],
'metrics' => 'ym:s:visits,ym:s:yanShows,ym:s:yanPartnerPrice',
'dimensions' => 'ym:s:yanUrlHash',
'lang' => 'en',
'date1' => date1,
'date2' => date2,
'attribution' => 'Last',
'accuracy' => 'full'
}
, OAuth-токен передадим, как и необходимо, в HTTP-заголовке:
headers: {
Accept: 'application/x-yametrika+json',
Authorization: 'OAuth' + ENV['AUTH_TOKEN_METRIKA']
}
Вот как-то так.
Продолжение следует...
Комментарии в блоге