Следим за балансом «Яндекс.Директа» в «Google Таблицах»
Привет! Это ADF Media.
Мы очень любим микро автоматизацию PPC проектов в Google Таблицах.
Что у вас здесь происходит?!
В одной из прошлых статей мы сделали формулу с помощью которой можно получить статистику из Яндекс Директа не покидая Google Таблиц. Инструмент оказался полезным. Им воспользовалось более 1000 пользователей.
В комментариях, на почту и в личных сообщениях мы получили вопросы о возможности получения баланса.
В этом материале расскажем, как получить баланс аккаунта Яндекс Директ формулой в Google Таблицах и отправлять уведомления об остатке по расписанию на почту
Как всё работает
Из Яндекс Директа можно получить данные при помощи API. Это касается как статистики так и другой информации.
В данной таблице уже есть формула YandexDirectBalance. Этой формулой можно получить баланс из агентского или клиентского аккаунта Яндекс Директ.
Делается это так:
Вызываете формулу YandexDirectBalance
Первым аргументом указываете токен. Получить его можно в нашем приложении Яндекс OAuth
Вторым аргументом указываете логин аккаунта Яндекс Директ.
Можно указать несколько логинов. Перечислите их через точку запятую:
Формула вернёт таблицу из 3 столбцов: логин, баланс, валюта.
Вот и всё.
Но значение баланса в ячейке таблицы несет не так много пользы.
Представим, что мы хотим получать уведомление, когда денег на балансе осталось на 7 или менее дней.
В таблице «Баланс Яндекс.Директ» есть лист – schedule. В этом листе необходимо указать все параметры для получения баланса.
Параметры отмеченные знаком ✅ – можно редактировать, 🔴 – нельзя редактировать.
Авторизация
Имя — название клиента (произвольное имя)
Токен — токен агентского или клиентского аккаунта
Логин — логин аккаунта
Статистика
Баланс — выводится баланс формулой YandexDirectBalance
Расход за дней — кол-во дней для получения статистики расходов в столбце «Расход». Пример: 7 дней, это значит: если сегодня 8 августа, то период с 1 августа по 7 августа.
Расход — затраты за указанное кол-во дней
Дней открута — фактическое кол-во дней расхода. Например по Клиенту-1 получили 7 дней, а по Клиенту-2 получили 6 дней. Это значит, что по клиенту 2 в один из дней кампании были на стопе
Средний расход — результат «Расхода», деленное на «Дней открута»
Условия отправки уведомлений
Тема сообщения — тема письма, которое придет на почту.
К примеру, можно написать формулу:
Результат: Уведомление о балансе по клиенту Клиент-1
Сообщение — текст письма, которое приходит на почту.
Пример:
Результат: Уважаемый Клиент-1! Ваш баланс 333730,04. Он закончится через 4 дня. Примите меры!
Email — адреса для отправки необходимо заполнить через точку с запятой. Также аналогично другим столбцам можно выстроить свою логику отправок с помощью базовых формул Google-таблиц.
К примеру: нам необходимо отправлять уведомление только в том случае, если денег в кабинете будет меньше, чем наш расход за неделю. В таком случае формула будет выглядеть так:
В данной формуле мы говорим: если баланс / средний расход в день меньше чем 7 дней, то показать список электронных адресов, если нет - не показывать. В таком случае, когда денег на балансе хватит больше чем на 7 дней, согласно формуле, список электронных адресов не покажется в поле и уведомление не отправится. Если хватит меньше чем на 7 дней, то формула покажет почты, и функция отправит уведомления.
Также в этом поле проверяется корректность заполнения почт. Если в списке три электронных адреса, где одна почта указана некорректно, то сообщение отправится только двум электронным адресам.
Инструкция
Как применить к своему проекту:
Шаг 1. Переходим в Google-таблицу, создаем копию
Шаг 2. Указываем название клиента в столбце Имя
Шаг 3. Указываем токен аккаунта в столбце «Токен». Приложение для получения токена.
Шаг 4. Указываем логин аккаунта в столбце «Логин»
Шаг 5. Указываем нужное количество дней в столбце «Расход за дней»
Шаг 6. Пишем тему и текст письма в столбцах «Тема сообщения» и «Сообщение»
Шаг 7. Указываем список электронных адресов для отправки
Далее устанавливаем расписание:
Шаг 8. Скопируйте id вашей таблицы. Перейдите в Расширение -> Apps Script. Вставьте id в переменную в первой строке
Шаг 9. Предоставьте разрешения скрипту подключаться к внешним сервисам и отправлять письма
Шаг 10. Установите триггер отправки по времени
В добавление триггера для проекта устанавливаем следующие параметры:
Выберете функцию: balanceShedule
Выберете, какое развертывание выполнить: Основное развертывание
Источник мероприятия: Триггер по времени
Выберете тип триггера: По дням (для того, что бы получать уведомления раз в день)
Выберете необходимое время
- Сохранить
Готово!
Возможности этого инструмента более широкие. Поскольку в таблице есть формула YandexDirectReport можно отправлять статистику по расписанию. Например, настроить уведомление о расходе каждый час или о снижении открута по сравнению с предыдущим днем.
Заключение
Надеемся, что это решение позволит всем кто занимается контекстной рекламной освободить время от рутинных операций.
На практике подобный инструмент мы используем в наших проектах и передаём баланс в Telegram, отправляем на почту, также применяем при отчетности в Google Data Studio, Power BI, Tableu.
Доступ к таблице откройте - http://joxi.ru/RmzZ0KacjqJd9m
Выдает ошибку
TypeError: Cannot set property 'Logins' of undefined (строка 137).
Не починили? То же самое(
Помогите пожалуйста решить проблему: TypeError: Cannot set properties of undefined (setting 'Logins') (строка 137).
Нашел решение:
Переходим в Расширение - Apps Scripts, ищем функцию YandexDirectBalance.
Заменяем весь код этой функции на:
function YandexDirectBalance(yaToken, login) {
login = login.toString();
if (login.match(/;/g)) {
login = login.split(';');
} else {
login = [login];
}
var fireURL = 'https://api.direct.yandex.ru/live/v4/json/';
var data = {
"method": "AccountManagement",
"token": yaToken,
"param": {
"Action": "Get",
"SelectionCriteria": {
"Logins": login
}
}
};
var options = {
'method': 'post',
'headers': {
'Content-Type': 'application/json; charset=utf-8'
},
'payload': JSON.stringify(data),
'muteHttpExceptions': true
};
var response = UrlFetchApp.fetch(fireURL, options);
if (response.getContentText().toString().toLowerCase().match(/.*error.*/g)) {
errorHandler(response);
}
if (response.getResponseCode() === 200) {
try {
return responseHandler(response);
} catch(e) {
data.param['SelectionCriteria']['Logins'] = login;
options.payload = JSON.stringify(data);
response = UrlFetchApp.fetch(fireURL, options);
return responseHandler(response);
}
}
}
после этих изменений в таблицу изначально данные добавляются, но скрипт не выполняется
https://skr.sh/sJude0KAznx?a
Спасибо, пользуемся! Но по некоторым аккаунтам не выдает токен.( Пишет - вы покидаете Яндекс, а потом ошибка авторизации.
Можно что-то с этим сделать или нет?
У меня тоже такое бывает.
Вот тут https://yandex.ru/support/id/authorization/phone.html внизу напишите в службу поддержки - скажите, что хотите подключить сторонний сервис.
Выберите "Мне пришло непонятное сообщение от Яндекса".
Спасибо! Попробуем
Спасибо, всё работает)
Дней открута у меня в одном из аккаунтов неправильно показывает (в 5 раз меньше фактического значения), подскажите, пожалуйста, с чем может быть связано ?
Покажите скрином
Можно ли формулой YandexDirectBalance тянуть расход аккаунтов, которые заведены Еламой (начинаются с e-№аккаунта.) ? По таким аккаунтам вылезает ошибка.
Какая ошибка у вас вылезает?
Добрый день. Добавила в таблицу один аккаунт и все прекрасно работало, но после того, как решила добавить другой аккаунт начали появляться разные ошибки.
После того как я просто растянула формулу появилась первая ошибка была 54 - нет прав.
Затем я отдельно вызывала формулу YandexDirectBalance и появилась ошибка 53 - ошибка авторизации. Я отозвала полученный ранее токен, сменив пароль и получила новый, сейчас появляется следующая ошибка: Ошибка
Значение параметра Параметр 3 в функции INDEX равно 2. Оно должно входить в диапазон от 0 до 0 включительно.
Таблица шикарная, спасибо, облегчила мне жизнь!
Скажите, пожалуйста, возможно ли как-то узнавать расход за определенные дни? У меня в в таблице много аккаунтов, и мне каждый день нужно заполнять отчеты, сколько было потрачено со всех аккаунтов (сумма) каждый день, возможно как-то сделать, что бы можно было выбирать конкретный день и по этому дню смотреть общие расходы со всех акков?
Передавать свои данные все рекламному агенству - такое себе. Не рекомендую получать токены от сторонних агенств! Они получат все ваши данные аккаунта. В лучшем случае - будут названивать и предлагать свои услуги, в худшем продадут инфу конкурентам при возможности
Здравствуйте.
Подскажите, как часто обновление значения баланса происходит или должно происходить?