Пакет ryandexdirect предназначен для загрузки данных из Яндекс Директ и Яндекс Метрики в R, с помощью функций данного пакета вы можете работать с перечисленными ниже сервисами и службами API Яндекса с помощью готовых функций, не углубляясь при этом в документацию по работе с этими API сервисами.
Установка пакета осуществляется из репозитория GitHub, для этого сначала требуется установить и подключить пакет devtools.
install.packages("devtools")
library(devtools)
После чего можно устанавливать пакет ryandexdirect.
install_github('selesnow/ryandexdirect')
На данный момент в версию пакета 2.2.0 входит 13 функции:
yadirGetToken()
Функция для получения токена для доступа к API Яндекс.Директ, полученый токен используется во всех остальных функциях.
yadirGetClientList(token = NULL)
Данная функция возвращает дата фрейм со списком всех клиентов доступных в агентском аккаунте которому был выдан токен для доступа к API, используется только при работе с агентскими аккаунтами.
yadirGetClientList
дата фрейма:yadirGetClientParam(Language = "ru", login = NULL, token = NULL)
Функция возврщает Data frame с основными параметрами аккаунта Яндекс Директ.
Language - Язык ответа
login - Логин на Яндексе
token - Токен дотупа к API
yadirGetClientParam
дата фрейма:yadirGetCampaignList(logins = NULL, token = NULL)
Функция возвращает дата фрейм со списком рекламных кампаний и некоторых их параметров по логину.
login - Логин на Яндексе
token - Токен дотупа к API
yadirGetCampaignList
дата фрейма:yadirGetAdGroups(CampaignIds = c(1,2,3),Login = NULL, Token = NULL)
Функция возвращает дата фрейм со списком групп объявлений и некоторых их параметров по логину.
CampaignIds - Вектор с ID рекламных кампаний, по которым необходимо загрузить список групп объявлений
Login - Логин на Яндексе
Token - Токен дотупа к API
yadirGetAdGroups
дата фрейма:#Подключаем пакет
library(ryandexdirect)
#Получаем API token
my_token <- yadirGetToken()
#Получаем список рекламных кампаний
my_campaign <- yadirGetCampaignList(login = <ВАШ ЛОГИН>,
token = my_token)
#Получаем данные по группам объявлений
my_adgroups <- yadirGetAdGroups(CampaignIds = my_campaign$Id,
Login = <ВАШ ЛОГИН>,
Token = my_token)
yadirGetKeyWords(CampaignIds = c(1,2,3), WithStats = T, Login = NULL, Token = NULL)
Функция возвращает дата фрейм со списком групп объявлений и некоторых их параметров по логину.
CampaignIds - Вектор с ID рекламных кампаний, по которым необходимо загрузить список групп объявлений
WithStats - Логическое TRUE или FALSE, аргумент отвечает за загрузку статистики по показам и кликам, в случае если вы установите значение TRUE время работы функции будет значительно дольше.
Login - Логин на Яндексе
Token - Токен дотупа к API
yadirGetKeyWords
дата фрейма:#Подключаем пакет
library(ryandexdirect)
#Получаем API token
my_token <- yadirGetToken()
#Получаем список рекламных кампаний
my_campaign <- yadirGetCampaignList(login = <ВАШ ЛОГИН>,
token = my_token)
#Получаем данные по ключевым словам
my_keywords <- yadirGetKeyWords(CampaignIds = my_campaign$Id,
WithStats = F,
Login = <ВАШ ЛОГИН>,
Token = my_token)
yadirGetAds(CampaignIds = c(1,2,3), Login = NULL, Token = NULL)
Функция возвращает дата фрейм со списком групп объявлений и некоторых их параметров по логину.
CampaignIds - Вектор с ID рекламных кампаний, по которым необходимо загрузить список групп объявлений
Login - Логин на Яндексе
Token - Токен дотупа к API
yadirGetAds
дата фрейма:#Подключаем пакет
library(ryandexdirect)
#Получаем API token
my_token <- yadirGetToken()
#Получаем список рекламных кампаний
my_campaign <- yadirGetCampaignList(login = <ВАШ ЛОГИН>,
token = my_token)
#Получаем данные по ключевым словам
my_ads <- yadirGetAds(CampaignIds = my_campaign$Id,
Login = <ВАШ ЛОГИН>,
Token = my_token)
yadirGetBalance(Logins = NULL, Token = NULL)
Функция предназначена для загрузки остатка средств из общего счёта аккаунта рекламодателя, либо аккаунта клиента агентства со всеми доступными параметрами общего счёта.
Logins - Текстовый вектор содердащий Логин аккаунта рекламодателя на Яндексе, либо логин клиента агентсва.
Token - Токен дотупа к API
yadirGetAds
дата фрейма:#Подключаем пакет
library(ryandexdirect)
#Получаем API token
my_token <- yadirGetToken()
#Получаем остаток средств общего счёта для аккаунта рекламодателя
my_balance <- yadirGetBalance(Logins = "vasya", Token = "abcdef123456")
#Получаем список клиентских аккаунтов
my_client <- yadirGetClientList(Token = "abcdef123456")
#Получаем остатки средств на общих счетах всех клиентов агентского аккаунта
my_clients_balance <- yadirGetBalance(Logins = my_client$Login, Token = "abcdef123456")
yadirGetReport(ReportType = "CAMPAIGN_PERFORMANCE_REPORT", DateRangeType = "LAST_MONTH", DateFrom = NULL, DateTo = NULL, FieldNames = c("CampaignName","Impressions","Clicks","Cost"), FilterList = NULL, IncludeVAT = "NO", IncludeDiscount = "NO", Login = NULL, Token = NULL)
Основная функция пакета с помощь которой вы можете выгружать данные из сервиса Reports Яндекс Директ, ниже приведено подробное описание функции.
ReportType - Тип отчёта, принимает на вход строку с одним из возможных значений:
Тип отчетаОписаниеДобавляется группировка данныхНе допускаются поля ACCOUNT_PERFORMANCE_REPORTСтатистика по аккаунту рекламодателя–См. раздел Допустимые поля(https://tech.yandex.ru/direct/doc/reports/fields-list-docpage/) CAMPAIGN_PERFORMANCE_REPORTСтатистика по кампаниямCampaignIdСм. раздел Допустимые поля(https://tech.yandex.ru/direct/doc/reports/fields-list-docpage/) ADGROUP_PERFORMANCE_REPORTСтатистика по группам объявленийAdGroupIdСм. раздел Допустимые поля(https://tech.yandex.ru/direct/doc/reports/fields-list-docpage/) AD_PERFORMANCE_REPORTСтатистика по объявлениямAdIdAudienceTargetId, Criteria, CriteriaId, DynamicTextAdTargetId, ImpressionShare, Keyword, Query, RlAdjustmentId, SmartBannerFilterId CRITERIA_PERFORMANCE_REPORTСтатистика по условиям показаAdGroupId, CriteriaId, CriteriaTypeAdFormat, AdId, Placement, Query CUSTOM_REPORTСтатистика с произвольными группировками–ImpressionShare, Query SEARCH_QUERY_PERFORMANCE_REPORTСтатистика по поисковым запросамAdGroupId, QueryСм. раздел Допустимые поля(https://tech.yandex.ru/direct/doc/reports/fields-list-docpage/)DateRangeType - Тип периода отчёта, принимает на вход строку с одним из следующих значений.
LAST_BUSINESS_WEEK — прошлая рабочая неделя с понедельника по пятницу; На схеме:
LAST_WEEK_SUN_SAT — прошлая неделя с воскресенья по субботу;
DateFrom и DateTo - Начальная и конечная дата отчётного периода, необходимо указывать только в случае если в аргументе DateRangeType вы указали CUSTOM_DATE.
FieldNames - Строковый вектор содержащий названия полей которые вы хотите в результате получить, список доступных всех полей находится тут, при этом не все поля и типы отчётов совместимы между собой, если в результате запроса вы получили ошибку 400 проверьте все ли поля в вашем запросе между собой совместимы с помощью этой таблицы
Подробное описание всех полей можно посмотреть по этой ссылке.
FilterList - Строковый вектор с описанием всех фильтров которые вы хотите применить к своим данным, пример FilterList = c("Clicks GREATER_THAN 99","Impressions LESS_THAN 1000"), в данном случае вы получите таблицу агрегированные значения в которых имеют более 99 кликов и при этом менее 1000 показов, все перечисленные условия имеют между собой логическую связь "И".
IncludeVAT - Включать ли НДС в денежные суммы в отчете. Если рекламодатель работает в у. е. Директа, допускается только значение YES. Принимает значения "YES" и "NO".
IncludeDiscount - Учитывать ли скидку для денежных сумм в отчете. Если рекламодатель работает в у. е. Директа, допускается только значение NO. Принимает значения "YES" и "NO".
Login - Строковое вектор содержащий логины на Яндексе по которым необходимо получить данные.
Token - Строковое значение, ваш API token.
yadirGetDictionary(DictionaryName = "GeoRegions", Language = "ru", login = NULL, token = NULL)
Функция для загрузки справочников из API v.5. Яндекс Директ.
DictionaryName - Название справочника, принимает одно из следующих значений в текстовом виде.
DictionaryNameОписание AdCategoriesОсобые категории рекламируемых товаров и услуг. ConstantsОграничения на значения параметров. CurrenciesКурсы валют, валютные параметры и ограничения. GeoRegionsРегионы. MetroStationsСтанции метрополитена (только для Москвы, Санкт-Петербурга и Киева). OperationSystemVersionsмобильных приложений. ProductivityAssertionsРекомендации по повышению продуктивности. TimeZonesЧасовые пояса. SupplySidePlatformsВнешние сети (SSP). InterestsИнтересы к категориям мобильных приложений.Language - Язык предупреждений и сообщеий (не обязательный аргумент)
login - Строковое значение, ваш логин на Яндексе.
token - Строковое значение, ваш API token.
yadirGetCampaignListOld(logins = NULL, token = NULL)
Устаревшая функцая для получения списка рекламных кампаний, список функций запрашивался с помощью метода GetCampaignList из версии API 4, с августе 2016 года этот метод стал недоступен, для того что бы получить список кампаний используйте новую функциюyadirGetCampaignList(logins = NULL, token = NULL)
.
yadirGetSummaryStat(campaignIDS = NULL, dateStart = Sys.Date() - 10, dateEnd = Sys.Date(), currency = "USD", token = NULL)
Функция возвращает дата фрейм с общей статистикой в разрезе рекламных кампаний и дат.
yadirGetSummaryStat
дата фрейма:yadirCurrencyRates(login = NULL, token = NULL)
Функция возвращает дата фрейм с актуальными курсами валют в Яндекс.Директ.
yadirGetSummaryStat
дата фрейма:yadirGetLogsData(counter = NULL, date_from = Sys.Date() - 10, date_to = Sys.Date(), fields = NULL, source = "visits", token = NULL)
Функция для работы с Logs API Яндекс Метрики, которое позволяет выгрузить сырые данные.
Подробное описание аргументов можно посмотреть тут.
yadirGetMetrikaGAData(start_date = "10daysAgo", end_date = "today", counter_ids = NULL, dimensions = NULL, metrics = NULL, filters = NULL, sort = NULL, samplingLevel = "HIGHER_PRECISION", token = NULL)
Функция для работы с API Яндекс Метрики совместимым с Google Analytics Core Reporting API (v3) и Использовать привычные параметры запросов при сборе статистики, если ранее вы работали с Google Analytics Core Reporting API (v3).
library(ryandexdirect)
myToken <- yadirGetToken()
После запуска функции автоматически будет открыт браузер, на странице с выданным вам токеном, скопируйте его и вставьте в консоль R.
После чего в рабочей области появится объект myToken, который вы будете использовать в остальных функциях.
Далее в случае если у вас агетский аккаунт получаем список всех клиентов:
clientList <- yadirGetClientList(myToken)
Следующий шаг получить список рекламных кампаний клиентов, для этого в функции yadirGetCampaignList
, для агентских аккаунтов необходимо задать вектор со списком логинов тех аккаунтов по которым вы хотите получить статистику, для обычных аккаунтов достаточно просто указать ваш токен.
campaignList <- yadirGetCampaignList(logins = clientList$Login, token = myToken)
Для того, что бы получить дата фрейм со статиской по кампаниям в разрезе дней осталось воспользоваться функцией yadirGetSummaryStat
stat <- yadirGetSummaryStat(campaignIDS = campaigns$Id],
dateStart = "2016-01-01",
dateEnd = "2016-06-30",
currency = "USD",
token = myToken)
library(ryandexdirect)
myToken <- yadirGetToken()
clientList <- yadirGetClientList(myToken)
campaignList <- yadirGetCampaignList(logins = clientList$Login, token = myToken)
stat <- yadirGetSummaryStat(campaignIDS = campaignList$Id,
dateStart = "2016-01-01",
dateEnd = "2016-06-30",
currency = "USD",
token = myToken)
library(ryandexdirect)
myToken <- yadirGetToken()
My_report <- yadirGetReport(ReportType = "CAMPAIGN_PERFORMANCE_REPORT",
DateRangeType = "CUSTOM_DATE",
DateFrom = '2017-01-01',
DateTo = '2017-01-31',
FieldNames = c("CampaignName","Impressions","Clicks"),
FilterList = c("Clicks GREATER_THAN 49","Impressions LESS_THAN 1001"),
Login = <YourLogin>,
Token = myToken)
Вместо YourLogin подставьте в виде строки ваш логин на Яндексе, для примеры работы с фильтрами данный запрос вернёт рекламные кампании по которым за выбранный период было более 49 кликов и менее 1001 показа.
Данные в отчете можно агрегировать по различным периодам. Для этого укажите в аргументе FieldNames одно из значений Date, Week, Month, Quarter или Year.
Аргумент Login является векторизирован с версии 2.4.1 и может принимать на вход вектор логинов. Пример работы с векторизированной функцией yadirGetReport
:
library(ryandexdirect)
myToken <- yadirGetToken()
clientList <- yadirGetClientList(myToken)
stat <- yadirGetReport(ReportType = "ACCOUNT_PERFORMANCE_REPORT",
DateRangeType = "CUSTOM_DATE",
DateFrom = "2017-01-01",
DateTo = Sys.Date(),
FieldNames = c("Date","Impressions","Clicks","Cost"),
Login = clientList$Login,
Token = myToken)
library(ryandexdirect)
myToken <- yadirGetToken()
Regions <- yadirGetDictionary(DictionaryName = "GeoRegions",
Language = "ru",
login = <YourLogin>,
token = myToken
Вместо YourLogin подставьте в виде строки ваш логин на Яндексе, данный запрос загрузит в R справочник регионов Яндекс Директ.
library(ryandexdirect)
myToken <- yadirGetToken()
rawmetrikdata <- yadirGetLogsData(counter = "00000000",
date_from = "2016-12-01",
date_to = "2016-12-20",
fields = "ym:s:visitID,ym:s:date,ym:s:bounce,ym:s:clientID,ym:s:networkType",
source = "visits",
token = myToken)
library(ryandexdirect)
myToken <- yadirGetToken()
metrikData6 <- yadirGetMetrikaGAData(start_date = "2017-08-01",
end_date = "yesterday",
counter_ids = "ga:111111",
metrics = "ga:sessions,ga:bounces,ga:users",
dimensions = "ga:date,ga:sourceMedium",
token = myToken)
Для обхода блокировки API сервиса Яндекс.Директ, и Яндекс.Метрика необходимо сделать следующие действия: + Найти любой сервис генерирующий списки доступных прокси например этот + Выбрать в фильтре тип прокси поддерживающий HTTPS. + Сформировать список доступных прокси серверов.
+ Далее нам понадобятся только IP адрес и порт прокси сервера (я обычно использую сервера с портом 3128):
+ В данном случае в качестве примера возьмём американский сервер который находится в третей строке списка IP 104.37.212.5 порт 3128, далее в код R перед функцией обращения к API необходимо направить интернет соединение через прокси сервер добавив в код строку
Sys.setenv(https_proxy="http://104.37.212.5:3128")
+ После пишем обычный код обращения к API.
+ После чего добавляем строку для отклчения интернет соединения от прокси сервера с помощью строки.
Sys.unsetenv("https_proxy")
+ В случае если прокси сервер требует прохождения аутентификации вы можете указать имя пользователя и пароль:
Sys.setenv(https_proxy="http://user:password@proxy_server:port")
+ Проверить установилась ли необходимая настройка соединения можно с помощью команды:
Sys.getenv("https_proxy")
+ Пример кода для обращения к API Яндекс.Директ через прокси сервер. В данном случае подразумевается что ранее вы уже получили токен доступа.
library(ryandexdirect)
Sys.setenv(https_proxy="http://104.37.212.5:3128")
My_report <- yadirGetReport(ReportType = "CAMPAIGN_PERFORMANCE_REPORT",
DateRangeType = "CUSTOM_DATE",
DateFrom = '2017-01-01',
DateTo = '2017-01-31',
FieldNames = c("CampaignName","Impressions","Clicks"),
FilterList = c("Clicks GREATER_THAN 49","Impressions LESS_THAN 1001"),
Login = <YourLogin>,
Token = "897rn4jfk3jhfyb9ufjhkjdhks3390uui")
Sys.unsetenv("https_proxy")
## Автор пакета: Алексей Селезнёв, Head of Analytics Dept. at Netpeak
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.