Яндекс. Метрика — отличный инструмент для сбора данных о посещениях сайта, но, к сожалению, бывает так, что в веб-интерфейсе не хватает того или иного функционала – например, автоматической отправки отчета. В этой статье я подробно опишу, как получить статистику по роботности 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»
2. Получите токен доступа к API Яндекс.Метрики
2.1. Создаем приложение oauth.yandex.ru/client/new
- Права -> Яндекс.Метрика, выше выбираем «Получение статистики» и «создание счетчиков»;
- Callback URL -> выбираем “подставить URL для разработки»;
- Сохраняем
Получаем следующее:
2.2. Идем по ссылке: oauth.yandex.ru/authorize?response_type=token&client_id=<идентификатор приложения>, где вместо <идентификатора> подставляем свое значение ID.
2.3. Даем разрешение:
2.4. Копируем и сохраняем токен:
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 = "example@gmail.com",
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
3.3. Настраиваем расписание отправки:
3.4 Проверяем планировщик заданий (Панель управления ->Расписание выполнения задач)
Если задание есть, но письмо не отправляется — открываем свойства задания, вкладку «Действия» -> Изменить -> ставим 1 в конце строки
Автор: OMD_Annalect