На случай, если захочется потестить - ссылка на 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-сервере Яндекса.
Сразу затем уже можно запускать магию:
ruby bin/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']
}
Вот как-то так.
Продолжение следует...