Следим за балансом «Яндекс.Директа» в «Google Таблицах»

Привет! Это ADF Media.

Мы очень любим микро автоматизацию PPC проектов в Google Таблицах.

Что у вас здесь происходит?!

В одной из прошлых статей мы сделали формулу с помощью которой можно получить статистику из Яндекс Директа не покидая Google Таблиц. Инструмент оказался полезным. Им воспользовалось более 1000 пользователей.

В комментариях, на почту и в личных сообщениях мы получили вопросы о возможности получения баланса.

В этом материале расскажем, как получить баланс аккаунта Яндекс Директ формулой в Google Таблицах и отправлять уведомления об остатке по расписанию на почту

Как всё работает

Из Яндекс Директа можно получить данные при помощи API. Это касается как статистики так и другой информации.

В данной таблице уже есть формула YandexDirectBalance. Этой формулой можно получить баланс из агентского или клиентского аккаунта Яндекс Директ.

Делается это так:

Вызываете формулу YandexDirectBalance

Первым аргументом указываете токен. Получить его можно в нашем приложении Яндекс OAuth

Вторым аргументом указываете логин аккаунта Яндекс Директ.

Можно указать несколько логинов. Перечислите их через точку запятую:

=YandexDirectBalance("AQAAAAA4tfhfAAZAoZsO-I-bwUMPoIVrGiS9S", "login1;login2;login3")

Формула вернёт таблицу из 3 столбцов: логин, баланс, валюта.

Вот и всё.

Но значение баланса в ячейке таблицы несет не так много пользы.

В этом материале мы предложим способ отслеживания баланса с отправкой уведомления на почту по расписанию. И все это в Google Таблицах

Представим, что мы хотим получать уведомление, когда денег на балансе осталось на 7 или менее дней.

В таблице «Баланс Яндекс.Директ» есть лист – schedule. В этом листе необходимо указать все параметры для получения баланса.

Параметры отмеченные знаком ✅ – можно редактировать, 🔴 – нельзя редактировать.

Авторизация

Имя — название клиента (произвольное имя)

Токен — токен агентского или клиентского аккаунта

Логин — логин аккаунта

Статистика

Баланс — выводится баланс формулой YandexDirectBalance

Расход за дней — кол-во дней для получения статистики расходов в столбце «Расход». Пример: 7 дней, это значит: если сегодня 8 августа, то период с 1 августа по 7 августа.

Расход — затраты за указанное кол-во дней

Дней открута — фактическое кол-во дней расхода. Например по Клиенту-1 получили 7 дней, а по Клиенту-2 получили 6 дней. Это значит, что по клиенту 2 в один из дней кампании были на стопе

Средний расход — результат «Расхода», деленное на «Дней открута»

Условия отправки уведомлений

Тема сообщения — тема письма, которое придет на почту.

К примеру, можно написать формулу:

="Уведомление о балансе по клиенту "&A2

Результат: Уведомление о балансе по клиенту Клиент-1

Сообщение — текст письма, которое приходит на почту.

Пример:

="Уважаемый "&A2&"! Ваш баланс "&ROUND(D2*1,2;2)&". Он закончится через "&ROUND(D2/H2;0)&" дней. Примите меры!"

Результат: Уважаемый Клиент-1! Ваш баланс 333730,04. Он закончится через 4 дня. Примите меры!

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

К примеру: нам необходимо отправлять уведомление только в том случае, если денег в кабинете будет меньше, чем наш расход за неделю. В таком случае формула будет выглядеть так:

=IF(D2/H2<E2;"adv@adf-media.ru";"")

В данной формуле мы говорим: если баланс / средний расход в день меньше чем 7 дней, то показать список электронных адресов, если нет - не показывать. В таком случае, когда денег на балансе хватит больше чем на 7 дней, согласно формуле, список электронных адресов не покажется в поле и уведомление не отправится. Если хватит меньше чем на 7 дней, то формула покажет почты, и функция отправит уведомления.

Также в этом поле проверяется корректность заполнения почт. Если в списке три электронных адреса, где одна почта указана некорректно, то сообщение отправится только двум электронным адресам.

Инструкция

Как применить к своему проекту:

Шаг 1. Переходим в Google-таблицу, создаем копию

Шаг 2. Указываем название клиента в столбце Имя

Шаг 3. Указываем токен аккаунта в столбце «Токен». Приложение для получения токена.

Шаг 4. Указываем логин аккаунта в столбце «Логин»

Шаг 5. Указываем нужное количество дней в столбце «Расход за дней»

Шаг 6. Пишем тему и текст письма в столбцах «Тема сообщения» и «Сообщение»

Шаг 7. Указываем список электронных адресов для отправки

Далее устанавливаем расписание:

Шаг 8. Скопируйте id вашей таблицы. Перейдите в Расширение -> Apps Script. Вставьте id в переменную в первой строке

Шаг 9. Предоставьте разрешения скрипту подключаться к внешним сервисам и отправлять письма

Шаг 10. Установите триггер отправки по времени

В добавление триггера для проекта устанавливаем следующие параметры:

  1. Выберете функцию: balanceShedule

  2. Выберете, какое развертывание выполнить: Основное развертывание

  3. Источник мероприятия: Триггер по времени

  4. Выберете тип триггера: По дням (для того, что бы получать уведомления раз в день)

  5. Выберете необходимое время

  6. Сохранить

Готово!

Пример сообщения
Пример сообщения

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

Заключение

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

На практике подобный инструмент мы используем в наших проектах и передаём баланс в Telegram, отправляем на почту, также применяем при отчетности в Google Data Studio, Power BI, Tableu.

44
18 комментариев

Доступ к таблице откройте - http://joxi.ru/RmzZ0KacjqJd9m

1
Ответить

Выдает ошибку
TypeError: Cannot set property 'Logins' of undefined (строка 137).

1
Ответить

Не починили? То же самое(

Ответить

Помогите пожалуйста решить проблему: 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);
}
}
}

1
Ответить

Спасибо, пользуемся! Но по некоторым аккаунтам не выдает токен.( Пишет - вы покидаете Яндекс, а потом ошибка авторизации.
Можно что-то с этим сделать или нет?

Ответить

У меня тоже такое бывает.

Вот тут https://yandex.ru/support/id/authorization/phone.html внизу напишите в службу поддержки - скажите, что хотите подключить сторонний сервис.
Выберите "Мне пришло непонятное сообщение от Яндекса".

1
Ответить