Ошибка при работе с агентским аккаунтом
energystuff opened this issue · 4 comments
Выполняю Ваш код для агентского аккаунта:
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)
======
Ошибка в dataRaw$data[[i]][c("FIO", "Login", "DateCreate", "Phone", "Email", :
неправильный тип подгруппы 'list'
Вызовы: yadirGetClientList
Выполнение остановлено
"
Подскажите, как исправить?
Добрый день, подскажите а какая у вас установлена версия ryandexdirect? проверить это можно командой utils::packageDescription("ryandexdirect")$Version
. Возможно ошибка вызвана тем, что у вас старая версия пакета.
Далее ошибка в названии аргументов в функции yadirGetCampaignList
, после обновления, которое было пару месяцев назад аргументы необходимо именовать с заглавной буквы, т.е. не logins и token, а Logins и Token.
И ещё я вам не рекомендую использовать функцию yadirGetSummaryStat
, она была написана до того как в 5 версии API появился Report Service, сейчас намного более гибкие возможности для запроса статистики даёт функция yadirGetReport
Пример кода для работы с ней:
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)
Пока попробуйте обновить пакет, наверняка у вас старая версия - devtools::install_github('selesnow/ryandexdirect')
.
Спасибо! Работает. Еще два вопроса возникло.
1)Вопрос касательно получения баланса:
Получаю баланс с помощью кода:
my_clients_balance <- yadirGetBalance(Logins = clientList$Login, Token = "***")
Ошибка в yadirGetBalance(Logins = clientList$Login, Token = "***") :
Error: code - 241, message - Превышен допустимый размер массива, detail - Массив SelectionCriteria.Logins должен содержать не более 50 элементов
Выполнение остановлено.
- Как не учитывать аккаунты в архиве? Уходит много времени на загрузку данных по ним.
Добрый день.
- Error: code - 241, message - Превышен допустимый размер массива, detail - Массив SelectionCriteria.Logins должен содержать не более 50 элементов
Доработал функцию yadirGetBalance, теперь можно запрашивать данные более чем по 50 аккаунтам, для того что бы изменения вступили в силу у вас переустановите пакет с помощью команды devtools::install_github("selesnow/ryandexdirect")
Как не учитывать аккаунты в архиве? Уходит много времени на загрузку данных по ним.
Вы можете отфильтровать полученную таблицу клиентов, смотрите пример кода:
# подключаем пакет
library(ryandexdirect)
# получаем токен
yatoken <- yadirGetToken()
# получаем список клиентов из агентского аккаунта
clients <- yadirGetClientList(yatoken)
# оставляем только активных клиентов
active_cllients <- clients[clients$StatusArch == "No", ]
# запрашиваем остатки баланса по активным клиентам
client_balance <- yadirGetBalance(Logins = active_cllients$Login, yatoken)
Подскажите получилось решить вашу проблему, если да прошу закрыть тикет.