Оптимизация процесса мониторинга баланса

Предыстория

Вышел на меня случайно руководитель агентства, с задачей мониторинга баланса своих аккаунтов в Яндекс директ и Google adwords. Чувствовалось, что человек уже пообщался с программистами и заразился от них ругательными словами вроде базы данных, api и т. п. которые просили, по его словам, большие деньги за такое простое, по-моему, решение.

Я быстро представил картину того, что нужно примерно сделать, т.к. на тот момент уже хорошо ориентировался в Яндекс api и в администрировании сервера. С Google adwords мне пришлось разобраться, много попотеть и высказать много нецензурных слов. Пару раз даже хотел бросить все это дело. Об этом подробнее читайте далее.

Решение

Требовались данные за прошлый месяц, неделю и день, а также добавить вычисляемый столбец — через сколько закончатся деньги. Рассчитывается он просто:

Средний расход в день = расход за прошлую неделю без выходных/5

На сколько хватит дней = Баланс / Средний расход в день.

База данных.

Так как исторические данные нам не нужны, база данных здесь ни к чему. Пишется все в csv файл. Они забыли, кстати, попросить сделать выгрузку в Google spreadsheets. С его api я тоже разобрался, но доплатить они не захотели. Данные выгружаются на локальный компьютер.

Данные за прошлый месяц скачиваются в первый день нового месяца, за прошлую неделю — в понедельник, за прошлый день — один раз в начале дня. Текущий баланс каждый час или как вы настроите расписание.

Сервер

Зачем сервер? Устанавливаем python на компьютер, создаем через планировщика задач расписание запуска скрипта — при запуске компьютера и ежечасно.

Такое решение избавляет от оплаты сервера и специалиста, который в случае чего, сможет реанимировать сервер.

В общем, написал для них инструкцию.

Какие трудности возникли.

Трудно было понять Api Adwords. Большая справка, много страниц, много букв. Долго вникал, как авторизоваться через api. Из их готовой библиотеки для работы с api, получал access токен 3 дня. В общем, недели две разбирался, как авторизоваться. Тут пару раз и хотел бросить это дело.

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

К этому моменту я был истощен, не было желания продолжать. Токен разработчика без ограничений нужно «вымаливать», так мне казалось, у google на английском языке и не было уверенности, что это поможет. И все-таки решил попытаться получить его, а если не получится, то окончательно забить на это. Так буду считать, что сделал все возможное, совесть будет чистой.

Собравшись с силами, открыл их страницу с кучей вопросов для получения токена и ответил. К моей радости, ответили они быстро. Задали уточняющие вопросы и попросили демо версию моей программы, которой у меня не было. И тут я подумал: «Ну все, точно приехали». Но через часа три мне пришла идея просто сбросить им весь свой код на последок, а вдруг прокатит! И что вы думаете? Следующее письмо было поздравление о том, что мне выдан токен. Вот уж точно, поздравление здесь в тему! За это, после такого, можно и нужно выпить. Скрипт начал работать без проблем.

Вот такая история. Спасибо что прочитали до конца. Надеюсь вам было интересно, я старался.

Если вам требуется подобное решение, обращайтесь. Мои контакты здесь.

  • Aleks Kh

    А каким образом получаете баланс аккаунта из AdWords?

    • Павел

      Нужно суммировать всю бюджеты клиента и вычесть расход за всю историю, так получите текущий баланс.