{"id":14284,"url":"\/distributions\/14284\/click?bit=1&hash=82a231c769d1e10ea56c30ae286f090fbb4a445600cfa9e05037db7a74b1dda9","title":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043d\u0446\u044b \u0441 \u0441\u043e\u0431\u0430\u043a\u0430\u043c\u0438","buttonText":"","imageUuid":""}

Следим за балансом «Яндекс.Директа» в «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;"[email protected]";"")

В данной формуле мы говорим: если баланс / средний расход в день меньше чем 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.

0
18 комментариев
Написать комментарий...
Сергей Мошненко

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

Ответить
Развернуть ветку
Александр Захаров

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

Ответить
Развернуть ветку
Alex Skaai

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

Ответить
Развернуть ветку
Alex Skaai

Помогите пожалуйста решить проблему: TypeError: Cannot set properties of undefined (setting 'Logins') (строка 137).

Ответить
Развернуть ветку
Andrey Safarov

Нашел решение:
Переходим в Расширение - 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

Ответить
Развернуть ветку
Hlyakina Julia

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

Ответить
Развернуть ветку
Stanislav Shmelev

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

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

Ответить
Развернуть ветку
Hlyakina Julia

Спасибо! Попробуем

Ответить
Развернуть ветку
Ольга Гусева

Спасибо, всё работает)

Ответить
Развернуть ветку
Сергей Мошненко

Дней открута у меня в одном из аккаунтов неправильно показывает (в 5 раз меньше фактического значения), подскажите, пожалуйста, с чем может быть связано ?

Ответить
Развернуть ветку
ADF Media
Автор

Покажите скрином

Ответить
Развернуть ветку
Сергей Мошненко

Можно ли формулой YandexDirectBalance тянуть расход аккаунтов, которые заведены Еламой (начинаются с e-№аккаунта.) ? По таким аккаунтам вылезает ошибка.

Ответить
Развернуть ветку
ADF Media
Автор

Какая ошибка у вас вылезает?

Ответить
Развернуть ветку
Лучиана Андромедова

Добрый день. Добавила в таблицу один аккаунт и все прекрасно работало, но после того, как решила добавить другой аккаунт начали появляться разные ошибки.
После того как я просто растянула формулу появилась первая ошибка была 54 - нет прав.
Затем я отдельно вызывала формулу YandexDirectBalance и появилась ошибка 53 - ошибка авторизации. Я отозвала полученный ранее токен, сменив пароль и получила новый, сейчас появляется следующая ошибка: Ошибка
Значение параметра Параметр 3 в функции INDEX равно 2. Оно должно входить в диапазон от 0 до 0 включительно.

Ответить
Развернуть ветку
Рубен Аветисян

Таблица шикарная, спасибо, облегчила мне жизнь!
Скажите, пожалуйста, возможно ли как-то узнавать расход за определенные дни? У меня в в таблице много аккаунтов, и мне каждый день нужно заполнять отчеты, сколько было потрачено со всех аккаунтов (сумма) каждый день, возможно как-то сделать, что бы можно было выбирать конкретный день и по этому дню смотреть общие расходы со всех акков?

Ответить
Развернуть ветку
Иван Чесноков

Передавать свои данные все рекламному агенству - такое себе. Не рекомендую получать токены от сторонних агенств! Они получат все ваши данные аккаунта. В лучшем случае - будут названивать и предлагать свои услуги, в худшем продадут инфу конкурентам при возможности

Ответить
Развернуть ветку
Александр Орлов

Здравствуйте.
Подскажите, как часто обновление значения баланса происходит или должно происходить?

Ответить
Развернуть ветку
15 комментариев
Раскрывать всегда