Bruno.

Scripts

Scripts Google Ads testados em contas reais

Biblioteca de Google Ads Scripts que uso no dia a dia para automatizar tarefas repetitivas, proteger orçamento e manter qualidade. Copy-paste pronto, sem tretas.

Performance MaxAlertasBudget

01. Alerta de queima de orçamento

Dispara email quando uma campanha gasta mais de X% do budget diário antes das Y horas.

De hora em hora

Problema que resolve

Campanhas Performance Max podem consumir o budget diário em 3-4 horas e deixar o resto do dia sem presença. Este script deteta e avisa antes de ser tarde.

Código

// Alerta de queima de orçamento, Bruno Matos / obruno.pt
// Executar: Hourly
// Ajusta os thresholds abaixo

const THRESHOLD_PERCENT = 75; // Alerta quando gastou >75% do budget diário
const CUTOFF_HOUR = 14; // Antes desta hora (14h)
const EMAIL = 'o-teu-email@exemplo.pt';

function main() {
  const now = new Date();
  const hour = now.getHours();
  if (hour >= CUTOFF_HOUR) return;

  const campaigns = AdsApp.campaigns()
    .withCondition('Status = ENABLED')
    .withCondition('AdvertisingChannelType IN [PERFORMANCE_MAX, SEARCH, SHOPPING]')
    .get();

  const alerts = [];
  while (campaigns.hasNext()) {
    const c = campaigns.next();
    const spent = c.getStatsFor('TODAY').getCost();
    const budget = c.getBudget().getAmount();
    if (budget === 0) continue;
    const pct = (spent / budget) * 100;
    if (pct >= THRESHOLD_PERCENT) {
      alerts.push(`• ${c.getName()}, ${pct.toFixed(0)}% (€${spent.toFixed(2)} de €${budget.toFixed(2)})`);
    }
  }

  if (alerts.length > 0) {
    const body = `Campanhas a queimar budget antes das ${CUTOFF_HOUR}h:\n\n${alerts.join('\n')}`;
    MailApp.sendEmail(EMAIL, '⚠️ Budget burn alert, Google Ads', body);
  }
}

Como instalar

  1. 1Google Ads → Tools → Scripts → novo script
  2. 2Colar o código acima
  3. 3Substituir THRESHOLD_PERCENT, CUTOFF_HOUR e EMAIL
  4. 4Autorizar o script (precisa de acesso ao Mail)
  5. 5Agendar com frequência: Hourly
SearchBroad MatchOtimização

02. Exclusão automática de search terms irrelevantes

Adiciona como negativas palavras que aparecem em search terms mas têm 0 conversões após N cliques.

Semanal

Problema que resolve

Em campanhas Broad Match Search, deixam-se entrar termos que nunca convertem. Fazer isto à mão é um inferno. Este script faz limpeza semanal.

Código

// Exclusão automática de search terms sem conversão, Bruno Matos / obruno.pt
// Executar: Weekly
// Adiciona como negativo ao nível de campanha

const MIN_CLICKS = 20;
const CONVERSIONS_THRESHOLD = 0;
const LOOKBACK_DAYS = 30;

function main() {
  const report = AdsApp.report(
    `SELECT CampaignId, Query, Clicks, Conversions ` +
    `FROM SEARCH_QUERY_PERFORMANCE_REPORT ` +
    `WHERE Clicks >= ${MIN_CLICKS} AND Conversions = ${CONVERSIONS_THRESHOLD} ` +
    `DURING LAST_${LOOKBACK_DAYS}_DAYS`
  );

  const rows = report.rows();
  let added = 0;

  while (rows.hasNext()) {
    const row = rows.next();
    const campaignId = row['CampaignId'];
    const query = row['Query'];

    const campaign = AdsApp.campaigns()
      .withIds([campaignId])
      .get()
      .next();

    campaign.createNegativeKeyword(`[${query}]`);
    added++;
    Logger.log(`Adicionada negativa: "${query}" (campanha ${campaign.getName()})`);
  }

  Logger.log(`Total: ${added} search terms excluídos.`);
}

Como instalar

  1. 1Google Ads → Tools → Scripts → novo script
  2. 2Colar o código acima
  3. 3Ajustar MIN_CLICKS, CONVERSIONS_THRESHOLD, LOOKBACK_DAYS conforme o teu volume
  4. 4Correr uma vez em Preview para ver o que seria excluído
  5. 5Agendar com frequência: Weekly
URLsAlertasQualidade

03. Verificação de URLs partidos

Percorre todos os URLs finais das keywords/anúncios e alerta se algum dá 404 ou 5xx.

Diária

Problema que resolve

Anúncio que aponta para URL morto = Quality Score a descer + orçamento queimado. Este script verifica tudo automaticamente.

Código

// Verificação de URLs partidos, Bruno Matos / obruno.pt
// Executar: Daily

const EMAIL = 'o-teu-email@exemplo.pt';

function main() {
  const broken = [];
  const checked = new Set();

  const ads = AdsApp.ads().withCondition('Status = ENABLED').get();
  while (ads.hasNext()) {
    const ad = ads.next();
    const urls = ad.urls();
    const finalUrl = urls.getFinalUrl();
    if (!finalUrl || checked.has(finalUrl)) continue;
    checked.add(finalUrl);

    try {
      const response = UrlFetchApp.fetch(finalUrl, {
        muteHttpExceptions: true,
        followRedirects: true,
      });
      const code = response.getResponseCode();
      if (code >= 400) {
        broken.push(`• ${finalUrl} → HTTP ${code}`);
      }
    } catch (e) {
      broken.push(`• ${finalUrl} → ERRO: ${e.message}`);
    }
  }

  if (broken.length > 0) {
    const body = `URLs com problemas detetadas:\n\n${broken.join('\n')}`;
    MailApp.sendEmail(EMAIL, '⚠️ URLs partidos, Google Ads', body);
  }
}

Como instalar

  1. 1Google Ads → Tools → Scripts → novo script
  2. 2Colar código e substituir EMAIL
  3. 3Autorizar acesso (UrlFetch + Mail)
  4. 4Preview → verificar se encontra problemas existentes
  5. 5Agendar: Daily

Perguntas frequentes

Coisas que normalmente perguntam

+Os scripts funcionam em contas normais?

Sim. Google Ads Scripts estão disponíveis em qualquer conta de Google Ads (free, single ou MCC). Precisam de autorização ao correr, o Google vai pedir permissão ao email associado.

+Preciso de saber programar para usar?

Não. Estes scripts são feitos para copiar-colar e funcionar. Só precisas de substituir variáveis (email, thresholds) e agendar. A linguagem é JavaScript mas não precisas de editar a lógica.

+E se partir alguma coisa?

Testa sempre em Preview mode antes de agendar. Os scripts desta página são defensivos (só alertam ou adicionam negativas, não apagam campanhas). Mas valida sempre no teu ambiente.

+Posso modificar os scripts?

Sim, à vontade. São open-source e sem licença restritiva. Atribuição é bonita mas não obrigatória.

● Lead magnet

Queres os 50 scripts?

Tenho uma biblioteca completa com 50+ Google Ads Scripts testados em contas reais. Alertas, exclusões, automações, bid adjustments, consolidação de reports, análise de search terms, budget pacing e mais.

Deixas o email, recebes todos. Sem spam, sem newsletter, sem tretas, só os scripts.

  • 🔔 12 alertas (budget, URLs, Quality Score…)
  • 🧹 8 scripts de limpeza automática
  • 📊 10 reports e dashboards
  • 🎯 7 scripts de bid management
  • 🔍 6 scripts de search terms
  • ⚡ 7 outros essenciais

Queres um script à medida?

Construo scripts custom para automações específicas da tua conta.

Falar comigo →

Exemplo prático

O alerta que salvou o dia de feira

Caso real do padrão: campanha local com orçamento diário curto que esgotava às 11h da manhã nos dias de maior procura, precisamente quando os clientes procuravam. Ninguém dá por isto a olhar para médias semanais. Um script simples de alerta (orçamento esgotado antes das 14h → email) apanhou o padrão na primeira semana; a redistribuição de orçamento devolveu as horas de maior intenção.

É este o papel dos scripts: vigilância automática do que o olho humano não vê todos os dias. Começa pelo alerta de orçamento e pelo de anomalias de gasto; são os que pagam o esforço mais depressa.

Erros que vejo em contas reais

  • • Copiar scripts sem rever autorizações e frequência de execução: um script mal agendado spamma ou falha em silêncio.
  • • Usar scripts para o que as regras nativas já fazem melhor (pausar por CPA é regra, não script).
  • • Não registar num sítio o que cada script instalado faz: seis meses depois ninguém sabe porque chegou aquele email.

Do conceito aos resultados

Preferes a conta vigiada por quem faz isto todos os dias?

Uso estes scripts nas contas que giro como especialista em Google Ads: a automação vigia o orçamento e o meu tempo vai para onde rende, a estratégia.