Google Ads Scripts · Orçamento
Script Google Ads para controlar o ritmo do orçamento mensal
Um alerta de pacing para encontrar verba acelerando ou ficando muito abaixo do planejado antes do fechamento do mês.
O problema de orçamento nem sempre é “gastar demais”. Uma conta também pode terminar o mês muito abaixo da verba planejada por limitação de demanda, configuração, reprovação ou mudança de estratégia. Por isso, um alerta útil precisa mostrar gasto atual, percentual consumido e projeção.
O que este script monitora
- gasto acumulado no mês;
- orçamento mensal informado no
CONFIG; - percentual consumido;
- projeção simples até o fim do mês;
- limite de tolerância para sobreconsumo projetado.
ImportanteO orçamento mensal é um parâmetro seu. O script não tenta inferir sozinho a verba “correta” e não altera budgets da conta.
Script completo
/**
* ALERTA DE RITMO DO ORÇAMENTO MENSAL
* Somente leitura: não altera orçamento nem pausa campanhas.
*/
const CONFIG = {
EMAIL: 'seu-email@empresa.com.br',
MONTHLY_BUDGET: 10000,
ALERT_WHEN_USED_PERCENT: 85,
PROJECTED_OVERSPEND_TOLERANCE_PERCENT: 5
};
function main() {
validateConfig();
const account = AdsApp.currentAccount();
const timezone = account.getTimeZone();
const today = new Date();
const monthStart = new Date(today.getFullYear(), today.getMonth(), 1);
const monthEnd = new Date(today.getFullYear(), today.getMonth() + 1, 0);
const spent = getCost(monthStart, today, timezone);
const elapsedDays = Math.max(today.getDate(), 1);
const totalDays = monthEnd.getDate();
const usedPercent = (spent / CONFIG.MONTHLY_BUDGET) * 100;
const projectedSpend = (spent / elapsedDays) * totalDays;
const projectedLimit = CONFIG.MONTHLY_BUDGET *
(1 + CONFIG.PROJECTED_OVERSPEND_TOLERANCE_PERCENT / 100);
const lines = [
`Conta: ${account.getName()} (${account.getCustomerId()})`,
`Gasto acumulado: ${money(spent)}`,
`Orçamento mensal: ${money(CONFIG.MONTHLY_BUDGET)}`,
`Consumido: ${usedPercent.toFixed(1)}%`,
`Projeção: ${money(projectedSpend)}`
];
Logger.log(lines.join('\n'));
if (usedPercent >= CONFIG.ALERT_WHEN_USED_PERCENT || projectedSpend > projectedLimit) {
if (!AdsApp.getExecutionInfo().isPreview()) {
MailApp.sendEmail(
CONFIG.EMAIL,
`[Google Ads] Ritmo do orçamento - ${account.getName()}`,
lines.join('\n') + '\n\nRevise contexto e qualidade das conversões antes de mudar verba.'
);
}
}
}
function getCost(startDate, endDate, timezone) {
const query = `
SELECT metrics.cost_micros
FROM customer
WHERE segments.date BETWEEN '${formatDate(startDate, timezone)}'
AND '${formatDate(endDate, timezone)}'
`;
const rows = AdsApp.search(query);
let micros = 0;
while (rows.hasNext()) micros += Number(rows.next().metrics.costMicros || 0);
return micros / 1e6;
}
function formatDate(date, timezone) {
return Utilities.formatDate(date, timezone, 'yyyy-MM-dd');
}
function money(value) {
return Number(value || 0).toLocaleString('pt-BR', {
style: 'currency',
currency: AdsApp.currentAccount().getCurrencyCode()
});
}
function validateConfig() {
if (!/@/.test(CONFIG.EMAIL)) throw new Error('Configure CONFIG.EMAIL.');
if (!(CONFIG.MONTHLY_BUDGET > 0)) throw new Error('MONTHLY_BUDGET precisa ser maior que zero.');
}Como configurar
- Troque
EMAIL. - Informe o orçamento em
MONTHLY_BUDGET. - Ajuste o percentual de alerta conforme sua tolerância.
- Rode em Visualizar e compare o gasto com a interface.
- Agende diariamente somente depois da conferência.
O que não fazer com esse alerta
Não use a projeção isoladamente para reduzir ou aumentar verba. O ritmo pode mudar por sazonalidade, mudança de CPC, volume de busca, atraso de conversão ou decisão comercial. O alerta deve abrir uma investigação, não executar a decisão.
Como interpretar três cenários
| Situação | Leitura inicial | Próxima checagem |
|---|---|---|
| Projeção acima da verba | Ritmo acelerado | Campanhas, CPC, demanda e limites. |
| Projeção muito abaixo | Subinvestimento | Impressões perdidas, demanda, reprovações e estratégia. |
| Gasto normal e vendas fracas | Problema pode não ser orçamento | Conversões, página, CRM e qualidade do lead. |