Выгружаем данные из множества аккаунтов Яндекс.Директ. Часть 4
Совместно с коллегами из ADF Media — Артемом Дурневым и Султаном Назаралиевым – мы решили выпустить цикл из 6 статей, посвященных автоматизации процессов в Яндекс.Директе. О теории вы уже можете почитать в первой статье. Во второй вы узнаете, как отправлять запросы без знаний программирования, а в третьей – как получить данные из Директа с помощью языка R. Но это все – цветочки. Самое интересное впереди!
Сегодня мы научимся выгружать данные в Директе из большого количества аккаунтов одним кликом мыши. Метод, который будет представлен, подойдет как для специалистов, работающих с одним агентским аккаунтом, так и для обычных рекламодателей, у кого есть несколько клиентских кабинетов. Данный метод реализован с применением цикла “for”.
Немного теории
Начнем с того, что циклы служат базовыми строительными блоками, которые используются для любых повторяющихся задач. То есть, когда необходимо повторять блоки кода определенное количество раз, используются циклы. Это избавляет нас от добавления одного и того же кода многократно.
Цикл состоит из трех частей:
Оператор – тип цикла. Мы будем использовать цикл типа for. Это цикл, который повторяется заранее известное количество раз.
Условие – это определение количества повторений цикла.
- Тело – код цикла, который должен сработать при прохождении условия.
Пример:
Оператор for будет работать до тех пор, пока не закончатся переменные.
Давайте попробуем применить полученные знания в деле!
Практическая часть
Чтобы приступить к выгрузке данных, нам нужно знать, как получить токен и установить R и среду RStudio.
Теперь приступим к самой практике:
Запишем данные всех аккаунтов, по которым необходимо получить отчет в один объект:
Вот сюда заполняются данные аккаунтов.
Нужно написать:
«Токен Яндекса» = «Тип аккаунта: client или agent»
Если аккаунт клиентский – просто запросим отчет и запишем в общую таблицу по всем аккаунтам.
Если аккаунт агентский– запросим всех активных клиентов агентства и запросим по каждому активному клиенту отчет.
Если нужно добавить ещё аккаунт – ставим в конце запятую и пишем новую строку.
Было:
Стало:
Данные аккаунтов понадобятся в цикле для получения статистики по всем клиентам, которые будут в таблице.
В полной версии скрипта мы вынесли все переменные настроек:
- Токены аккаунтов
- Поля отчета Яндекс Директ
- Дата начала отчета Яндекс Директ
- Дата окончания отчета Яндекс Директ
- Почта аккаунта Google для загрузки в Google Spreadsheet
После редактирования переменных настроек скрипта нужно авторизоваться в Google Spreadsheet для загрузки таблиц.
Далее нам нужно создать пустую таблицу, в нее мы будем записывать результат из цикла.
В теле цикла используем функцию YDGetReport.
Аргументы функции YDGetReport:
- ClientLogin — логин клиента в Яндекс.Директ. Если используется для агентского аккаунта, укажите логин клиента. Если ваш аккаунт представительский, логин представительского аккаунта;
- Fields — поля отчета. Формат данных — массив;
- StartDate — дата начала отчёта в формате ГГГГ-ММ-ДД;
- EndDate — дата окончания отчёта в формате ГГГГ-ММ-ДД;
- Token — токен Яндекса;
- Goals — ID целей Яндекс Метрики, по которым требуется получить статистику. Необязательное поле. Формат данных — массив.
Без цикла эту функцию также можно использовать, если вам нужно получить статистику с одного аккаунта.
Сам цикл (основной код):
for(t in 1:length(yandexToken)) – здесь мы задаем условие, взять по очереди токены аккаунтов которые мы ввели в самом начале.
Мы проверяем к какому типу относится этот токен. Если это клиентский логин, то просто запрашиваем отчёт и добавляем данные в общую таблицу.
Если логин агентский – запрашиваем список активных клиентов и по каждому клиенту получаем отчёт.
Весь код
Запись в Google Таблицы с помощью пакета googlesheets4
Авторизация в Google Таблицах
auth <- sheets_auth(email = googleLogin)
Эту строчку кода нужно выполнить отдельно от всего остального кода, т.к. после выполнения этой функции R будет ждать введения в консоль токена, который вам выдаст приложение Google после подтверждения в браузере.
Запись
Эта функция предназначена для создания Google таблицы в том аккаунте в котором вы авторизовались
sheets_create(fileName, sheets = generalData)
Аргументы функции sheet_create:
- name— Название Таблицы которая будет создана в Google Таблицах
- sheets — данные которые будут записаны на лист Google Таблицы
Полный код, по традиции, приводим на сайте.
Очень интересно, жаль прекратили цикл статей.
Расскажите как получать данные об остатке средств на аккаунте и вместо direct client # задать свои произвольные значения