Google Ads: Код объяснен
Данный код представляет собой скрипт для Google Ads, который выполняет следующие действия:
В функции
main()
происходит инициализация переменных и получение активных бюджетных заказов (budgetOrders) с помощью методаAdsApp.budgetOrders().withCondition('Status = ACTIVE').get()
. Если количество бюджетных заказов больше 1, то выполняется циклwhile
, в котором для каждого бюджетного заказа из списка происходит следующее:- Проверяется наличие ограничения расходов (
spendingLimit
) для данного бюджетного заказа с помощью условияbudget.getSpendingLimit() !== null
. - Получается дата начала (
startDate
) бюджетного заказа с помощью функцииtimeFormat(budget.getStartDateTime())
. - Получается статистика затрат для указанного периода времени с помощью метода
AdsApp.currentAccount().getStatsFor(startDate, today()).getCost().toFixed(2)
. - Получаются значения статистики за последний месяц (
LAST_MONTH
), текущий месяц (THIS_MONTH
), вчера (YESTERDAY
) с помощью методовAdsApp.currentAccount().getStatsFor('LAST_MONTH').getCost().toFixed(2)
,AdsApp.currentAccount().getStatsFor('THIS_MONTH').getCost().toFixed(2)
,AdsApp.currentAccount().getStatsFor('YESTERDAY').getCost().toFixed(2)
. - Получаются значения ограничения расходов (
spendingLimit
) и баланса (balance
) для бюджетного заказа. - Рассчитывается средний расход за последние 7 дней (
last7DayCost
) путем деления статистики затрат за последние 7 дней на 7 и округления результата до 2 десятичных знаков. - Рассчитывается оставшееся количество дней до исчерпания бюджета (
remainingDays
) путем деления баланса на средний расход за последние 7 дней и округления результата до целого числа. - Формируется массив
row
со значениями аккаунта (account
), баланса (balance
), среднего расхода за последние 7 дней (last7DayCost
), затрат за вчера (yesterday
), оставшихся дней (remainingDays
), затрат за последний месяц (lastMonth
), затрат за текущий месяц (thisMonth
), текущей даты (today()
).
- Проверяется наличие ограничения расходов (
Если количество бюджетных заказов равно 1, то выполняется блок
else
, в котором для единственного бюджетного заказа из списка происходит следующее:- Получается дата начала (
startDate
) бюджетного заказа с помощью функцииtimeFormat(budget.getStartDateTime())
. - Получается статистика затрат для указанного периода времени с помощью метода
AdsApp.currentAccount().getStatsFor(startDate, today()).getCost()
. - Получаются значения ограничения расходов (
spendingLimit
), среднего расхода за последние 7 дней (last7DayCost
), затрат за последний месяц (lastMonth
), затрат за текущий месяц (thisMonth
), затрат за вчера (yesterday
), баланса (balance
) для бюджетного заказа. - Рассчитывается оставшееся количество дней до исчерпания бюджета (
remainingDays
) путем деления баланса на средний расход за последние 7 дней и округления результата до целого числа. - Формируется массив
row
со значениями аккаунта (account
), баланса (balance
), среднего расхода за последние 7 дней (last7DayCost
), затрат за вчера (yesterday
), оставшихся дней (remainingDays
), затрат за последний месяц (lastMonth
), затрат за текущий месяц (thisMonth
), текущей даты (today()
).
- Получается дата начала (
Формируется текстовое сообщение (
text
), которое содержит информацию о бюджете и статистике затрат.Инициализируется массив
entities
с информацией о форматировании текста (в данном случае делается аккаунт жирным).Выполняется цикл
for
, в котором для каждогоchatId
из спискаchatIds
выполняется вызов функцииsendTelegramMessage()
, передавая ей текст сообщения,chatId
,entities
иTOKEN
(токен для доступа к Telegram API). Если происходит ошибка, она логируется в консоль.Функция
sendTelegramMessage()
отправляет сообщение в Telegram с использованием Telegram API и переданных параметровtext
,chatId
,entities
иtoken
.Функция
budgetData()
выполняет запрос к базе данных Google Ads и получает информацию о бюджете, в том числе о текущем балансе (balance
), и возвращает его.Функция
today()
возвращает текущую дату в формате "yyyyMMdd".Функция
timeFormat(date)
форматирует переданную дату в формат "yyyyMMdd" и возвращает строку с отформатированной датой.Функция
dayToPay(limit, fullCost, last7dayCost)
рассчитывает оставшееся количество дней до исчерпания бюджета (limit
) на основе общих затрат (fullCost
) и сред
Конечно! Данный скрипт предназначен для работы с рекламными кампаниями в Google Ads. Он помогает отслеживать и контролировать расходы на рекламу и отправлять информацию о них в Telegram.
Вот как работает этот скрипт шаг за шагом:
Сначала мы инициализируем несколько переменных, таких как
account
(имя аккаунта),timeZone
(часовой пояс аккаунта) иformat
(формат даты).Затем мы получаем список активных бюджетных заказов (
budgetOrders
).Если в списке более одного бюджетного заказа, мы выполняем цикл
while
, который проходит по каждому бюджетному заказу и собирает информацию о его статистике затрат и ограничении расходов.Если у бюджетного заказа есть ограничение расходов, мы получаем статистику затрат для определенного периода времени, такого как вчера, последний месяц и текущий месяц. Мы также рассчитываем средний расход за последние 7 дней и оставшееся количество дней до исчерпания бюджета.
Если в списке только один бюджетный заказ, мы выполняем те же действия, что и в предыдущем пункте, но без цикла.
Затем мы формируем текстовое сообщение, которое содержит информацию о бюджете и статистике затрат.
Мы отправляем это сообщение в Telegram, используя функцию
sendTelegramMessage()
.Функция
sendTelegramMessage()
отправляет сообщение в Telegram с помощью Telegram API, используя переданные ей параметры.Функция
budgetData()
выполняет запрос к базе данных Google Ads и получает информацию о бюджете и текущем балансе.Функция
today()
возвращает текущую дату в нужном формате.Функция
timeFormat(date)
форматирует переданную дату в нужный формат.Функция
dayToPay(limit, fullCost, last7dayCost)
рассчитывает оставшееся количество дней до исчерпания бюджета на основе общих затрат и среднего расхода за последние 7 дней.
В итоге, данный скрипт помогает контролировать бюджеты рекламных кампаний в Google Ads и отправляет информацию о статистике затрат в Telegram для удобного отслеживания и управления рекламными расходами.
Остаток на аккаунте рассчитывается в функции budgetData()
. Давайте рассмотрим эту функцию подробнее.
javascriptfunction budgetData() {
var q = "SELECT customer.descriptive_name, account_budget.adjusted_spending_limit_micros, account_budget.adjusted_spending_limit_type, account_budget.approved_spending_limit_micros, account_budget.approved_spending_limit_type, account_budget.pending_proposal.spending_limit_micros, account_budget.pending_proposal.spending_limit_type, account_budget.proposed_spending_limit_micros, account_budget.proposed_spending_limit_type, billing_setup.end_date_time, billing_setup.end_time_type, billing_setup.id, billing_setup.status, billing_setup.start_date_time, account_budget.amount_served_micros, account_budget.approved_end_date_time, account_budget.approved_end_time_type, account_budget.total_adjustments_micros, account_budget.name, account_budget.id, account_budget.status FROM account_budget";
var report = AdsApp.search(q);
while(report.hasNext()) {
var r = report.next();
var amountServedMicros = r.accountBudget.amountServedMicros / 1000000;
var adjustedSpendingLimitMicros = r.accountBudget.adjustedSpendingLimitMicros / 1000000;
var balance = (adjustedSpendingLimitMicros - amountServedMicros);
}
return balance.toFixed(2);
}
В этой функции мы выполняем запрос к базе данных Google Ads с использованием языка запросов SQL
. Запрос выбирает несколько полей, включая adjusted_spending_limit_micros
(скорректированный лимит расходов) и amount_served_micros
(сумма затрат).
Затем мы получаем результат запроса в переменной report
.
Далее, с помощью цикла while
, мы проходим по каждой записи в результате запроса и получаем значения amountServedMicros
и adjustedSpendingLimitMicros
. Затем мы рассчитываем остаток на аккаунте, вычитая сумму затрат (amountServedMicros
) из скорректированного лимита расходов (adjustedSpendingLimitMicros
). Результат сохраняется в переменной balance
.
Наконец, мы возвращаем остаток на аккаунте, округленный до двух десятичных знаков, с помощью метода toFixed(2)
.
Таким образом, функция budgetData()
выполняет запрос к базе данных Google Ads, получает информацию о скорректированном лимите расходов и сумме затрат, и рассчитывает остаток на аккаунте путем вычитания суммы затрат из лимита расходов. Этот остаток возвращается и используется в основной части скрипта для дальнейших расчетов и формирования сообщений.