Skip to content
  • 3.6.0
  • bdbeb32
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.6.0
  • bdbeb32
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this Jun 11, 2020 · 6 commits to master since this release

ryandexdirect 3.6.0

дата: 2020-06-09

  • В пакет добавлена функция yadirGetCostData(), которая запрашивает данные о расходах, кликах и показах по рекламным кампаниям, ключевым словам и объвлениям для дальнейшей загрузки в Google Analytics.
  • Техническое обновление, исправлена опечатка в функции yadirGetForecast(), изза которой не корректно работал фильтр по регионам.
  • Исправлена ошибка C stack usage 1592693 is too close to the limit.
  • Исправлен обработчик ошибок в функции yadirGetReport(), который запускается аргументом SkipErrors = FALSE.
  • В функции yadirGetReport() измененно дефолтное значение аргумента DateRangeType с 'LAST_30_DAYS' на 'CUSTOM_DATE'.
  • Добавлена виньетка vignette("yandex-direct-cost-data", package = "ryandexdirect"), посвящённая функции yadirGetCostData()
  • Актуализирована виньетка по авторизации.
Assets 2
  • 3.4.1
  • 6f8e121
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.4.1
  • 6f8e121
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this May 14, 2020 · 19 commits to master since this release

Исправлена ошибка C stack usage 1592693 is too close to the limit с которой могли столкнуться пользователи пакета начиная с версии 3.4.0.

Assets 2
  • 3.5.0
  • bdc1d47
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.5.0
  • bdc1d47
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this May 7, 2020 · 28 commits to master since this release

В версии 3.5.0 были добавлены новые функции и возможности:

  • Добавлена функция yadirGetForecast(), с помощью которой вы можете получить прогноза показов, кликов и затрат.
  • Добавлена виньетка yandex-direct-keyword-bids, в которой подробно описан процесс запроса отчётов из сервиса WordStat и построении прогнозов с помощью функции yadirGetForecast().
  • Для удобства авторизации в ryandexdirect были добавлены опции, и поддержка переменных среды.
    • Опции:
      • ryandexdirect.user - логин по умолчанию
      • ryandexdirect.token_path - путь к папке с учётными данными по умолчанию
      • ryandexdirect.agency_account - агентсткий аккаунт по умолчанию
    • Переменные среды:
      • RYD_USER - логин по умолчанию
      • RYD_TOKEN_PATH - путь к папке с учётными данными по умолчанию
      • RYD_AGENCY - агентсткий аккаунт по умолчанию
  • Добавлена функция yadirGetLogins(), с помощью которой вы можете получить список всех логинов, учётные данные по которым сохраненны в TokenPath, так же можно с помощью этой же функции переключиться из одного логина на другой.
  • Добавлена функция yadirSetLogin(), которая позволяет в коде легко переключаться между логинами под которыми вы прошли авторизацию, если вы укажите логин под которым авторизация ещё не пройдена, то процесс авторизации будет запущен автоматически.
  • Добавлена функция yadirSetAgencyAccount(), которая позволяет в коде легко переключаться между агентскими аккаунтами под которыми вы прошли авторизацию, если вы укажите логин аккаунта под которым авторизация ещё не пройдена, то процесс авторизации будет запущен автоматически.
Assets 2
  • 3.2.2
  • 5d804dc
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.2.2
  • 5d804dc
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this Oct 31, 2019 · 61 commits to master since this release

ryandexdirect 3.2.2

дата: 2019-10-31

Что нового?

  • Функция yadirGetCampaignList() с версии 3.2.2 считается устаревшей. Она будет присутвовать в пакете, но не будет развиваться. Вместо неё рекомендуется использовать функцию yadirGetCampaign().
  • В таблицу возвращаемую функцией yadirGetCampaign() добавлены новые поля:
    • SourceId - Идентификатор исходной кампании в у. е., если текущая кампания была создана автоматически при переходе рекламодателя на работу в валюту.
    • FundsMode - Тип финансовых показателей кампании:
      • CAMPAIGN_FUNDS — общий счет не подключен, финансовые показатели кампании возвращаются в поле CampaignFundsBalance;
      • SHARED_ACCOUNT_FUNDS — общий счет подключен, финансовые показатели кампании возвращаются в поле SharedAccountFundsSpend.
    • CampaignFundsBalance - Текущий баланс кампании в валюте рекламодателя, без учета НДС.
    • CampaignFundsBalanceBonus - Скидочный бонус. Параметр утратил актуальность.
    • CampaignFundsSumAvailableForTransfer - Сумма, доступная для переноса на другую кампанию, в валюте рекламодателя, без учета НДС.
    • SharedAccountFundsRefund - Параметр утратил актуальность, всегда возвращается значение 0.
    • SharedAccountFundsSpend - Сумма средств, израсходованных по данной кампании за все время ее существования, с учетом НДС.
    • AttributionModel - Модель атрибуции, используемая для оптимизации конверсий:
      • FC — первый переход.
      • LC — последний переход.
      • LSC — последний значимый переход.
      • LYDC — последний переход из Яндекс.Директа.
  • В пакете появился документ со всеми устаревшими функциями, посмотреть его можно с помощью команды help("ryandexdirect-deprecated").
Assets 2
  • 3.2.0
  • 27adae7
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.2.0
  • 27adae7
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this Jun 20, 2019 · 79 commits to master since this release

В версии ryandexdirect 3.2.0 добавлено 3 новые функции позволяющие назначать ставки и приоритеты ключевым фразам и автотаргетингам, а также для получения данных, полезных при назначении ставок.

  • yadirGetKeyWordsBids - Возвращает ставки и приоритеты для ключевых фраз и автотаргетингов, отвечающих заданным критериям, а также данные торгов: ставки и списываемые цены для различных объемов трафика на поиске и ставки для охвата различных долей аудитории в сетях;
  • yadirSetKeyWordsBids - Назначает фиксированные ставки и приоритеты для ключевых фраз и автотаргетингов;
  • yadirSetAutoKeyWordsBids - Назначает для фраз ставки на поиске в зависимости от желаемого объема трафика или ставки в сетях в зависимости от желаемой частоты показа (доли аудитории).

Подробно ознакомится с тем, как использовать новые функции можно в виньетке: vignette("yandex-direct-keyword-bids", package = "ryandexdirect").

Пример кода для загрузки данных о ставках и назначении новых ставок.

# подключаем пакет
library(ryandexdirect)

# запрашиваем список ключевых слов
kw <- yadirGetKeyWords()
                       
# запрашиваем ставки
bids  <- yadirGetKeyWordsBids(kw$Id)

# запрашиваем ставки и данные торго на поиске
bids_search <- yadirGetKeyWordsBids(kw$Id,
                                    AuctionBids = "search")
                                    
# запрашиваем ставки и данные торго в сетях
network_bids <- yadirGetKeyWordsBids(kw$Id,
                                     AuctionBids = "network")

# запрашиваем список рекламных кампаний
camp <- yadirGetCampaign()

# меняем ставки
setbid     <- yadirSetKeyWordsBids(CampaignIds = camp$Id[1],
                                   SearchBid   = 9)

# меняем ставки
autosetbids <- yadirSetAutoKeyWordsBids(KeywordIds = kw$Id,
                                        TargetTrafficVolume = 50)

Установка новой версии пакета

На данный момент функционал находится в тестовом режиме и доступен только при установке из GitHub с помощью команды: devtools::install_github("selesnow/ryandexdirect").

Assets 2
  • 3.1.6
  • 8a86796
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.1.6
  • 8a86796
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this May 31, 2019 · 92 commits to master since this release

Достаточно важное обновление ryandexdirect:

  1. В ryandexdirect добавлены 2 виньетки:
  • Загрузка статистики из сервиса API Reports. vignette("yandex-direct-get-statistic", package = "ryandexdirect")
  • Авторизация в API Яндекс Директ. vignette("yandex-direct-auth", package = "ryandexdirect")
  1. В функцию yadirGetReport добавлен аргумент FetchBy. За эту доработку спасибо Эдуарду Горху.

Аргумент FetchBy знаком пользователям пакета RGA написанным Артёмом Клевцовым.

Зачем это надо?
В сервисе API Reports существует недокументированное ограничение на 1 000 000 строк который вы можете загрузить в рамках одного отчёта. В случае если у вас большой аккаунт, и вы запрашиваете данные за длительный период в глубокой детализации возможна ситуация, что вы получите не полный ответ. При этом API не даст никакого оповещения о проблеме.

Теперь функция yadirGetReport при возникновении подобной ситуации выведет вам сообщение 'You have reached the limits of Yandex.Direct API. Try to use "FetchBy" parameter with DateRangeType = "CUSTOM_DATE", "DateFrom" and "DateTo". If you are already using it, try to choose a smaller value.'. Это говорит о том, что вы превысили лимит, и скорее всего в ответе получили неполный объём данных.

Теперь вы можете использовать аргумент FetchBy и разбить ваш запрос на части, по временному диапазону.

Возможные значения: "DAY", "WEEK", "MONTH", "QUARTER", "YEAR"

Я решил этот функционал сделать ещё полезнее и дописал следующее. В случае достижения лимита, помимо предупреждения в возвращаемый дата фрейм будет добавлен атрибут limit_reached, в котором будет храниться вектор с логинами, тех аккаунтов по которым был достигнут лимит. С помощью команды attr вы можете получить этот вектор, и использовать его для фильтрации полученного результата и повторного сбора данных из с разбивкой запроса на части.

Наиболее правильный вариант использования атрибута limit_reached и аргумента FetchBy - использовать цикл while. Который на каждой итерации будет проверять наличии аккаунтов достигших лимита, и запускать по ним повторный сбор данных с разбивкой запроса на временные интервалы.

Пример использования описанного выше функционала:

library(ryandexdirect)

# создаём результирующий фрейм
res   <- data.frame()

# список логинов
log_list <- c("login1", "login2","login3", "login4")

# создаём последовательность уровней временной разбивки запросов
fetching_seq <- c("OFF", "MONTH", "WEEK", "DAY")

# счётчик последовательностей разбивки
fetch_id <- 1

# запускаем цикл загрузки данных с проверкой лимитов
while ( ! is.null( log_list ) ) {
  
  # определяем уровень разбивки запроса
  if ( fetching_seq[fetch_id] == "OFF" ) fetching <- NULL else fetching <- fetching_seq[fetch_id]
  
  # запускаем сбор данных
  data <- yadirGetReport(DateRangeType = "CUSTOM_DATE", 
                         DateFrom      = "2018-06-01", 
                         DateTo        = "2019-05-31", 
                         FieldNames    = c("Date","CampaignName","Impressions","Clicks"),
                         Login         = log_list,
                         FetchBy       = fetching)
  
  # если загрузка была по одному аккаунту добавляем его логин
  if ( length(log_list) == 1 ) {
    data$Login <- log_list
  }
  
  # проверяем список аккаунтов достигших лимита
  log_list <- attr(data, "limit_reached")
  
  # выводим список аккаунтов достигших лимита
  print(log_list)
  
  # если есть аккаунты достигшие лимита
  if ( length(log_list) > 0 ) {
    # очищаем от них общую таблицу
    data <- data[ ! data$Login %in% log_list, ]
    # переключаем уровень разбивки на более мелкий
    fetch_id <- fetch_id + 1
  } 
  
  # дописываем в результирующий фрейм данные
  # по тем аккаунтам которые не упёрлись в лимит
  if ( nrow(data) > 0 ) {
    res <- dplyr::bind_rows(res, data)
  }
  
  # проверяем модно ли разбить запрос на более мелкие части
  if ( fetch_id > length(fetching_seq) && length(log_list) > 0 ) {
    message("Запрос невозможно разбить на меньшие части")
    message("Аккаунты которые достигли лимита при загрузке данных по дням: ", paste(log_list, collapse = ", "))
    limits_login <- log_list
    break
  }
}
  1. Исправлена проблема, которая возникала при запросе статистики сразу из нескольких клиентских аккаунтов, которые являются автономными по отношению друг к другу, т.е. не привязаны к одному агентскому аккаунту.

Версия 3.6.0 в течении ближайших нескольких недель будет находиться в тесовом режиме, в связи с чем пока установить актуальную версию можно только с GtHub с помощью команды devtools::install_github("selesnow/ryandexdirect").

Assets 2
  • 3.1.5
  • 22acbbd
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.1.5
  • 22acbbd
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this May 2, 2019 · 99 commits to master since this release

За последние несколько месяцев было проведено много работ по подготовке ryandexdirect к публикации на CRAN, большая часть из которых была направлена на исправление его документации.

Ранее под разные операционные системы были две разные версии пакета, теперь, после публикации на CRAN у вас не будет проблем с установкой пакета, и кодировкой текста. Правда все русскоязычные сообщения из пакета были удалены, таковы требования CRAN, в коде можно использовать только латиницу.

Так же был исправлен ряд ошибок, и немного внедрены некоторые доработки.

Доработки

  1. Для сокращении имени, и приведения названия функций к одному виду у функции yadirGetCampaignList появилась дублирующая функция yadirGetCampaign, для совмещения новой версии пакета с кодом написанным под более ранними версиями обе функции в нём остаются;
  2. Доработка предложенная в тикете #18 , в результат возвращаемый функцией yadirGetCampaign добавлены следующие поля:
    • SearchBidStrategyType - Тип стратегии показа объявлений в поисковой сети Яндекса;
    • NetworkBidStrategyType - Тип стратегии показа объявлений в поисковой сети Яндекса;
  3. Из пакета удалены следующие устаревшие функции: yadirGetSummaryStat, yadirGetCampaignListOld, yadirGetLogsData, yadirGetMetrikaGAData;
  4. В функции yadirGetCampaign и yadirGetCampaignList по умолчанию в фильтр по типу кампаний включена загрузка кампаний с типом CPM_BANNER_CAMPAIGN;
  5. Функция yadirGetToken теперь так же может сохранять полученный токен в локальный файл, если пользователь даст на это разрешение, но обновляться такой токен по истечению срока не будет, т.к. к нему не привязан refresh token.

Исправления

  1. Исправлена ошибка в функции yadirAuth, возникающая после автоматического обновления просроченного токена.
  2. Исправлена ошибка в функции yadirGetToken, которую я допустил внедрив доработку по сохранению токена в локальный файл.

Для установки или обновления пакета из CRAN можно воспользоваться стандартной командой install.packages("ryandexdirect").

Бейджи

Rdoc
rpackages.io rank

Assets 2
  • 3.0.13
  • 59e4851
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.0.13
  • 59e4851
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this Dec 29, 2018 · 183 commits to master since this release

Последний релиз 2018 года посвящён улучшениям функций yadirGetAds и yadieGetSiteLinks.

Данные обновления связаны с тикетом #15

Собственно, что было доработано:

  1. Функция yadirGetAds теперь возвращает поле SitelinkSetId, инедтификаторы набора быстрых ссылок прикреплённого к объявлению.
  2. В функцию yadirGetSiteLinks добавлен аргумент Ids, который на вход принимает вектор с идентификаторами наборов быстрых ссылок, информацию по которым вам необходимо получить.

Для обновления пакета до версии 3.0.13 воспользуйтесь одной из приведённых ниже команд:

обновить на Windows: devtools::install_github("selesnow/ryandexdirect")
обновить на Linux/Mac: devtools::install_github("selesnow/ryandexdirect", subdir = "utf8")

Assets 2
  • 3.0.11.0
  • d5dc110
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.0.11.0
  • d5dc110
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this Dec 11, 2018 · 204 commits to master since this release

Что нового

  1. Переписана функция yadirGetDictionary.
  2. Функция yadirCurrencyRates удалена из ryandexdirect.

Функция yadirGetDictionary

В связи с изменениями в справочнике валют, которые недавно были опубликованы в блоге API Яндекс.Директ, была частично переписана функция yadirGetDictionary.

  • из справочника исключена валюта YND_FIXED;
  • для остальных валют не возвращаться курс у. е. — параметры Rate и RateWithVAT.

Соответственно сам справочник валют теперь нельзя использовать для конвертации денежных данных из одной валюты в другую. Сам справочник валют теперь хранит следующую информацию.

  • FullName — название валюты на языке, указанном в запросе в HTTP-заголовке Accept-Language;
  • BidIncrement — шаг торгов;
  • MaximumBid — максимальная ставка за клик (техническое ограничение);
  • MaximumCPM — максимальная ставка или цена за тысячу показов для медийной рекламы;
  • MinimumAverageCPA — минимальное значение средней цены конверсии для стратегии AVERAGE_CPA, минимальное значение средней цены установки для стратегии AVERAGE_CPI;
  • MinimumAverageCPC — минимальное значение средней цены клика для стратегий AVERAGE_CPC, WEEKLY_CLICK_PACKAGE;
  • MinimumBid — минимальная ставка за клик;
  • MinimumCPM — минимальная ставка или цена за тысячу показов для медийной рекламы;
  • MinimumDailyBudget — минимальный дневной бюджет кампании;
  • MinimumPayment — минимальный платеж (без учета НДС), минимальный дневной бюджет общего счета;
  • MinimumTransferAmount — минимальная сумма перевода между кампаниями;
  • MinimumWeeklySpendLimit — минимальный недельный бюджет.

Пример кода для запроса справочника валют:

cd <- yadirGetDictionary(DictionaryName = "Currencies",
                         Login          = "my_login",
                         Language       = 'en')

Функция yadirCurrencyRates

В связи с теми же изменениями yadirCurrencyRates теперь работает не корректно, я не вижу смысла в дальнейшем поддерживать две функции которые выполняют одну и туже операцию, поэтому данная функция удалена из пакета.

Assets 2
  • 3.0.10
  • 394e4f2
  • Compare
    Choose a tag to compare
    Search for a tag
  • 3.0.10
  • 394e4f2
  • Compare
    Choose a tag to compare
    Search for a tag

@selesnow selesnow released this Dec 5, 2018 · 208 commits to master since this release

Функция yadirGetClientList переведена на работу с API версии 5

С сегодняшнего дня многие из вас при работе с функцией yadirGetClientList могли столкнуться со следующей ошибкой:

Error in dataRaw$data[[i]][c("FIO", "Login", "DateCreate", "Phone", "Email", : invalid subscript type 'list'

Связана она с тем, что функция работа со старой, т.е. 4 версией API Яндекс.Директ, и метод которой она использовался больше не поддерживается, в связи с чем функция была полностью переписана на 5 версию API.

Что нового

Синтаксис функции не изменился, никаких новых аргументов в неё добавлено не было, это означает что в большинстве случаев код написанный на прежних версиях будет работь, если вы не записываете полученные данные в базу данных.

Был значительно расширен список полей которые она возвращает.

В результирующую таблицу были добавлены следующие поля:

  • Currency - Валюта рекламодателя.
  • VatRate - Ставка НДС агентства.
  • ClientId - Идентификатор рекламодателя.
  • CountryId - Идентификатор страны рекламодателя из справочника регионов.
  • AccountQuality - Показатель качества аккаунта (см. раздел Показатель качества аккаунта помощи Директа).
  • Grants - Полномочия рекламодателя по управлению кампаниями. Возвращаюется в виде строки, формата "Агентство: Имя полномочия - Есть ли у клиента данное полномочие", полномочия между собой разделяются знаком ";".
  • Representatives - Представители рекламодателя. Возвращаюется в виде строки, формата "Логин пользователя: Роль пользователя". Роли могут быть:
    * CHIEF — главный представитель рекламодателя.
    * DELEGATE — обычный представитель рекламодателя.
    * UNKNOWN — роль не поддерживается в данной версии API.
  • Restrictions - Количественные ограничения на объекты рекламодателя. Возвращаюется в виде строки, формата "Имя ограничения: Значение ограничения". Ограничения бывают следующие:
    * CAMPAIGNS_TOTAL_PER_CLIENT — максимальное количество кампаний у рекламодателя.
    * CAMPAIGNS_UNARCHIVED_PER_CLIENT — максимальное количество кампаний, не находящихся в архиве.
    * ADGROUPS_TOTAL_PER_CAMPAIGN — максимальное количество групп в кампании.
    * ADS_TOTAL_PER_ADGROUP — максимальное количество объявлений в группе.
    * KEYWORDS_TOTAL_PER_ADGROUP — максимальное количество ключевых фраз в группе.
    * AD_EXTENSIONS_TOTAL — максимальное количество расширений к объявлениям у рекламодателя.
    * STAT_REPORTS_TOTAL_IN_QUEUE — максимальное количество одновременно формируемых статистических отчетов.
    * FORECAST_REPORTS_TOTAL_IN_QUEUE — максимальное количество хранимых на сервере отчетов о прогнозируемом бюджете, количестве показов и кликов.
    * WORDSTAT_REPORTS_TOTAL_IN_QUEUE — максимальное количество хранимых на сервере отчетов о статистике поисковых запросов.
  • Setting - Настройки рекламодателя. Возвращается в виде строки формата "Имя настройки: Значение настройки". На данный момент доступны следующие настройки:
    * CORRECT_TYPOS_AUTOMATICALLY — автоматически исправлять ошибки и опечатки.
    * DISPLAY_STORE_RATING — дополнять объявления данными из внешних источников (см. раздел Данные из внешних источников помощи Директа).
    * SHARED_ACCOUNT_ENABLED — подключен общий счет.

Как установить новую версию

Для установки новой версии воспользуйтесь следующим кодом:

install.packages("devtools")
devtools::install_github("selesnow/ryandexdirect")

Внимание

Напоминаю что данная функция работает только с агентскими аккаунтами, вы не можете получить список клиентов при работе с обычным рекламным аккаунтом используя его токен.

Assets 2
You can’t perform that action at this time.