selesnow/ryandexdirect

Ошибка при работе с агентским аккаунтом

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 элементов
Выполнение остановлено.

  1. Как не учитывать аккаунты в архиве? Уходит много времени на загрузку данных по ним.

Добрый день.

  1. 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)

Подскажите получилось решить вашу проблему, если да прошу закрыть тикет.