Sign in

Зарегистрируйтесь, чтобы стать полноправным участником сообщества Masterpro.ws.

API Yandex.Metrica: получаем статистику Рекламной Службы Яндекса

Очередной костыль, призванный "облЕгчить и углУбить" на сей раз работу со статистикой Рекламной Сети Яндекса; чуть ранее, если кто помнит, был аналогичный ruby-скрипт для получения и вывода в консоль информации счетчика Яндекс.Метрика.

 

API Yandex.Metrica: получаем статистику Рекламной Службы Яндекса

 

Увидеть на гитхабе.

 

На случай, если захочется потестить - ссылка на 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']
      }

 

Вот как-то так.

Продолжение следует...

6 комментарии

  • Aleksej

    написал Aleksej

    Понедельник, 10 февраля 2020 13:39

    Для себя всегда предпочитаю openSuse (Leap или Tumbleweed), также Fedora. Вероятно, чтобы начать, openSuse Leap - наилучший выбор. Ну или федорку ставьте, пакеты там поновее, чем в Leap.

    Никаких виндоус на рабочем компе у меня нет уже лет 10, подебажить возникшую проблему - для меня, увы, очень проблематично.

  • Artem

    написал Artem

    Понедельник, 10 февраля 2020 04:26

    Да, оба скрипта одинаковую ошибку выдают, думаю, что перебороть это - достаточно проблематично. Решил виртуалку линукса сделать, подскажите, какой лучше Линукс поставить (я до этого с ним не работал). Поставил Mint - там не получилось нормально Ruby установить

  • Aleksej

    написал Aleksej

    Пятница, 07 февраля 2020 15:01

    А второй скрипт - выдает ту же ошибку? вы ведь, судя по скриншоту, используете не тот, про который в этом материале, а тот, ссылка на который в начале. Т.е. в моем гитхабе на данный момент два скрипта, вытаскивающие в консоль статистику API Yandex.Metrica. Они похожи: но один заточен под данные РСЯ, другой - под иные dimensions/metrics. Репозитории легко находятся по названиям.

    Впрочем, уверен, со вторым скриптом у вас один в один та же трабла вылезет. Увы, переоценил я винду, как была Г (я не о серверах сейчас), так и осталась.

  • Artem

    написал Artem

    Пятница, 07 февраля 2020 06:22

    Спасибо, с этим справился, скачал архив для 64 битной винды с curl, файл с libcurl.dll положил в папку C:\Ruby26-x64\bin . Эта проблема решилась, теперь новая, сам уже час с ней борюсь - не выходить решить, может вы чем-то сможете помочь :) Заранее спасибо

  • Aleksej

    написал Aleksej

    Четверг, 06 февраля 2020 14:24

    Здравствуйте, после инсталляции 'typhoeus' я не вижу ошибок на вашем скриншоте. Инсталлировали, и что происходит дальше? все еще не работает? Другие три джема установили?

    P.S. Блин, как же все сложно на винде, оказывается. Думаю, ответ на этот вопрос, заданный на SO, содержит исчерпывающее объяснение проблемы 'Could not open library 'libcurl'', также способ решения: https://stackoverflow.com/questions/39377541/how-to-solve-libcurl-not-found-with-rails-on-windows

  • Artem

    написал Artem

    Четверг, 06 февраля 2020 12:32

    Здравствуйте, сделал всё по инструкции, но выдаёт ошибку, подскажите, пожалуйста, в чем может быть дело?

Оставить комментарий

Добавьте ваш комментарий

В блоге

Комментарии в блоге

  • Сережа Хорошая статья, что редкость в наше время. Спасибо!

    Понедельник, 08 июня 2020

    Опубликовано в: Между VirtualBox и KVM
  • Aleksej Характер коллектива, специфика рабочих профилей специалистов в значительной степени определяются личностью руководителя компании. Взаимосвязь здесь огромная, почти мистическая; не раз…

    Воскресенье, 31 мая 2020

    Опубликовано в: IWU (iwu.team) и Geecko (geecko.ru). Отзывы
  • ПроходилНоОставил Прислали вакансию какого-то "супер-пупер" стартапа. Но обязательна регистрация на их сайте, чтобы откликнуться на вакансию. Компания неизвестная, инфу про нее…

    Вторник, 26 мая 2020

    Опубликовано в: IWU (iwu.team) и Geecko (geecko.ru). Отзывы
  • Evgenij Правильный способ рестарта elasticsearch: _stackoverflow.com /questions /14119062/restart-elasticsearch-node

    Суббота, 04 апреля 2020

    Опубликовано в: Searchkick::MissingIndexError. Elasticsearch
  • Артемaws У меня тоже начались проблемы такие, но сейчас на дворе 20.03.2020. Около полугода работаю с яндекс картами и тут как…

    Пятница, 20 марта 2020

    Опубликовано в: Amazon Web Services отказывается принимать к оплате Яндекс.Деньги?