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

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

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

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

В блоге

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

  • serge Кажется, вы попытались реанимировать обсуждение очень старого материала, В. Как утверждает Википедия, Adbrite закрылся в 2013 году, и я не…

    Пятница, 16 октября 2020

    Опубликовано в: Контекстная реклама AdBrite
  • В. Возникло два вопроса. Здравствуйте. 1й . Adbrite присылает чек? Сюда , в Россию? И что разве наши банки примут чек,это…

    Пятница, 16 октября 2020

    Опубликовано в: Контекстная реклама AdBrite
  • Aleksej Попробуйте так: gem uninstall grpc gem install grpc -v 1.31.1

    Среда, 14 октября 2020

    Опубликовано в: Google-Cloud-Text-To-Speech-Ruby-CLI-App
  • Андрис У меня программа падает сразу после запуска, аварийный останов / дамп сбрасывается на диск. 'lib/gapic/grpc/service_stub.rb:73: [BUG] Illegal instruction' и так…

    Среда, 14 октября 2020

    Опубликовано в: Google-Cloud-Text-To-Speech-Ruby-CLI-App
  • Aleksej Думаю, воскреснет... аккурат первого числа следующего месяца... это, знаете ли, как в одной очень старой книжке, "не ищите живого среди…

    Четверг, 27 августа 2020

    Опубликовано в: API HeadHunter: скрипт для обновления резюме