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 a 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 todas as URLs finais das keywords/anúncios e alerta se alguma 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 editar 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 é bonito mas não obrigatório.

● 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 →