Как стать автором
Обновить

Как настроить рассылку отчетов из Яндекс.Метрики с помощью R (с нуля)

Яндекс APIR
Из песочницы
Яндекс. Метрика — отличный инструмент для сбора данных о посещениях сайта, но, к сожалению, бывает так, что в веб-интерфейсе не хватает того или иного функционала – например, автоматической отправки отчета. В этой статье я подробно опишу, как получить статистику по роботности c помощью языка R.

Преимущества автоматической отправки отчетов:


  • Можно заранее настроить необходимый формат отчетов и не тратить время на выгрузки при приближении дедлайнов;
  • Нет ограничений по формату и периодичности выгрузки

1. Установите язык R и необходимые библиотеки


1.1. Скачайте и установите актуальную версию R, а также интегрированную среду разработки R Studio, в которой вам будет удобнее работать.

1.2. В R-Studio создаем новый файл и вставляем код:

install.packages("xlsx")
install.packages("mailR")
install.packages("taskscheduleR")

1.3. Чтобы запустить процесс установки пакетов, выделите весь текст и нажмите «Run»

image

2. Получите токен доступа к API Яндекс.Метрики


2.1. Создаем приложение oauth.yandex.ru/client/new

  • Права -> Яндекс.Метрика, выше выбираем «Получение статистики» и «создание счетчиков»;
  • Callback URL -> выбираем “подставить URL для разработки»;
  • Сохраняем

image

Получаем следующее:

image

2.2. Идем по ссылке: oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор приложения>, где вместо <идентификатора> подставляем свое значение ID.

2.3. Даем разрешение:

image

2.4. Копируем и сохраняем токен:

image

3. Настраиваем автоматическую отправку отчета


3.1. Вставляем код в R-Studio:

Меняем: setwd, appToken, counterID, почту получателя, свою почту и пароль

library(xlsx) 
library(mailR)

setwd("D:/R") 

appToken <-"здесь должен быть токен" 

date1 <-format(Sys.Date()-1, "%Y-%m-%d") 
date2 <-format(Sys.Date()-1, "%Y-%m-%d")

counterID <-"здесь номер счетчика" 
metrics <-"ym:s:visits,ym:s:robotPercentage"
dimensions <-"ym:s:UTMSource"

api_request <-paste("https://api-metrika.yandex.ru/stat/v1/data.csv?id=",counterID,"&date1=",date1,"&date2=",date2,"&metrics=",metrics,"&dimensions=",dimensions,"&oauth_token=",appToken,sep="")
chem <-read.csv(file=api_request, encoding = "UTF-8")

filename <-paste("yandexbots_",date1,".xlsx",sep="")  

write.xlsx(chem, file=filename) 


textofbody <-paste ("Добрый день! Направляю отчетность по роботности за ", date1, sep="")
send.mail(from = "your_email@gmail.com",
          to = "здесь почта получателя",
          subject = "Роботность",
          body = textofbody,
          encoding = "utf-8",
          smtp = list(host.name = "smtp.gmail.com", port = 465, user.name = "your_email@gmail.com", passwd = "здесь пароль", ssl = T),
          authenticate = TRUE,
          send = TRUE,
          attach.files = filename,
          file.names = filename, 
          debug = TRUE)

* Если R-Studio ругается на xlsx, то идем по ссылке и скачиваем соответствующую версию java www.java.com/en/download/manual.jsp
** доступные метрики и группировки — можно посмотреть здесь

3.2. Идем в свой аккаунт Gmail и даем разрешение на взаимодействие с «ненадежными приложениями» (иначе письмо не отправится)
myaccount.google.com/u/4/security?hl=ru&pageId=none#connectedapps

image

3.3. Настраиваем расписание отправки:

image

image

3.4 Проверяем планировщик заданий (Панель управления ->Расписание выполнения задач)

Если задание есть, но письмо не отправляется — открываем свойства задания, вкладку «Действия» -> Изменить -> ставим 1 в конце строки

image
Теги:api яндексвеб-аналитикаRяндекс.метрика
Хабы: Яндекс API R
Всего голосов 18: ↑17 и ↓1 +16
Просмотры7.8K

Похожие публикации

Маркетолог проектов (стажёр)
от 40 000 до 60 000 ₽DeneroСанкт-Петербург
Web-analyst/Веб-аналитик
до 150 000 ₽SapeМоскваМожно удаленно
Senior Backend Engineer (Rest API, NodeJS, Python)
от 3 500 до 4 500 $DataDirect Networks Inc. (DDN)Можно удаленно
Web-analyst/Веб-аналитик
от 120 000 ₽Prime PartnerМосква
Трафик-менеджер (интернет-маркетолог)
от 50 000 ₽ПолисМожно удаленно

Лучшие публикации за сутки