Este tutorial documenta um script que audita a atividade da meta de conversão em todas as contas sob seu MCC. Ele grava os resultados em uma planilha do Google, marca a integridade de cada meta, codifica por cores o status e envia um resumo por e-mail somente quando há um problema.
Não há ferramentas desnecessárias ou painéis de terceiros, apenas controle bruto e visibilidade completa.
Esse script audita todas as contas do Google Ads sob sua MCC e avalia o status de cada meta de conversão em um período de análise definido. Em vez de adivinhar quais metas estão ativas ou quebradas, esse sistema fornece um instantâneo em tempo real em uma planilha do Google e só o alerta quando algo precisa de sua atenção.
There will be two email notifications: one for accounts needing attention and the other for all good accounts.
Exemplo:
Mensagens:
Got it, your script needs two distinct email outputs:
E-mail "All Good" (se nenhum problema for encontrado)
⚠️ E-mail "Needs Attention" (se alguma meta estiver inativa, ausente ou com baixo desempenho)
Veja exatamente como as duas versões devem ficar, usando seus dados de amostra e a lógica atual:
Mensagem nº 1
Todas as metas de conversão monitoradas estão informando a atividade dos últimos 60 dias.
Não foram encontrados problemas em nenhuma conta.
Veja o relatório completo:
https://docs.google.com/spreadsheets/d/yoursheetid
Mensagem nº 2
As seguintes metas de conversão podem precisar de revisão (por exemplo, nenhuma conversão recente ou inativa):
Bright Widgets Inc (123-456-789) - Envio de formulário de contato (precisa de atenção)
Acme Corp (987-654-321) - Agendar chamada (Inativo)
Acme Corp (987-654-321) - Registro de teste gratuito (precisa de atenção)
Rocket Leads (456-789-123) - (configurado, sem atividade) (Sem conversões recentes)
Beta Test Group (321-654-987) - (não configurado) (Inativo)
Zebra Analytics (999-111-222) - Download de whitepaper (precisa de atenção)
Veja o relatório completo:
https://docs.google.com/spreadsheets/d/yoursheetid
Antes de implementar o script, certifique-se de que seu ambiente esteja configurado corretamente. Esse script foi projetado para ser executado em um contexto de MCC do Google Ads para gravar dados e enviar alertas.
Este é o script em sua forma completa e não editada. Todos os comentários, a formatação e a lógica estão exatamente como foram escritos originalmente. Não o modifique se estiver planejando seguir o detalhamento mais adiante neste tutorial.
// ========== CONFIGURATION ========== const SHEET_ID = '1PvpW3eUl5fqRwabBg0P7D8LKzW83MOTVX1KDBMB3ipA'; const LOOKBACK_DAYS = 60; const EXCLUDED_ACCOUNT_IDS = [ '000-000-000', '000-000-000', '000-000-000' ]; const RECIPIENT_EMAILS = '[email protected]'; // =================================== function main() { const sheet = SpreadsheetApp.openById(SHEET_ID).getSheets()[0]; sheet.clear(); sheet.appendRow(['Account Name', 'Account ID', 'Goal Name', 'Conversions', 'Status', 'Date Range']); const startDate = getDateXDaysAgo(LOOKBACK_DAYS); const endDate = getTodayDate(); const dateRangeLabel = `Last ${LOOKBACK_DAYS} days (${startDate} to ${endDate})`; const accounts = MccApp.accounts().get(); const flagged = []; let rowIndex = 2; while (accounts.hasNext()) { const account = accounts.next(); const accountId = account.getCustomerId(); const accountName = account.getName(); Logger.log(`⏳ Checking account: ${accountName} (${accountId})`); if (EXCLUDED_ACCOUNT_IDS.includes(accountId)) { Logger.log(`🚫 Skipping excluded account: ${accountName} (${accountId})`); continue; } try { MccApp.select(account); const query = ` SELECT ConversionTypeName, Conversions FROM CAMPAIGN_PERFORMANCE_REPORT DURING ${startDate},${endDate} `; const report = AdsApp.report(query); const rows = report.rows(); const goalMap = {}; while (rows.hasNext()) { const row = rows.next(); const goalName = row['ConversionTypeName'] || '(not set)'; const conversions = parseFloat(row['Conversions']) || 0; if (!goalMap[goalName]) { goalMap[goalName] = 0; } goalMap[goalName] += conversions; } if (Object.keys(goalMap).length === 0) { Logger.log(`⚠️ No conversion data returned for account: ${accountName} (${accountId})`); const status = 'No Recent Conversions'; sheet.appendRow([ accountName, accountId, '(configured, no activity)', 0, status, dateRangeLabel ]); setStatusColumnColor(sheet, rowIndex, status); flagged.push(`${accountName} (${accountId}) - no conversion goals triggered`); rowIndex++; continue; } for (const [goalName, totalConversions] of Object.entries(goalMap)) { let status; if (totalConversions > 0) { status = 'Active'; } else if (goalName.toLowerCase().includes('test') || goalName === '(not set)') { status = 'Inactive'; } else { status = 'Needs Attention'; } sheet.appendRow([ accountName, accountId, goalName, totalConversions, status, dateRangeLabel ]); setStatusColumnColor(sheet, rowIndex, status); if (status !== 'Active') { flagged.push(`${accountName} (${accountId}) - ${goalName} (${status})`); } rowIndex++; } } catch (e) { Logger.log(`❌ Error processing account: ${accountName} (${accountId}) - ${e.message}`); } } if (flagged.length > 0) { const subject = '⚠️ Conversion Goals Needing Attention'; const body = `The following conversion goals may need review (e.g., no recent conversions or inactive):\n\n` + flagged.join('\n') + `\n\nView the full report:\nhttps://docs.google.com/spreadsheets/d/${SHEET_ID}`; MailApp.sendEmail(RECIPIENT_EMAILS, subject, body); } else { Logger.log('✅ All goals are reporting conversions.'); } } // 🎨 Apply color to only the "Status" column (Column E) function setStatusColumnColor(sheet, row, status) { const range = sheet.getRange(row, 5); // Column E switch (status) { case 'Active': range.setBackground('#d9ead3'); // Light green break; case 'Inactive': range.setBackground('#f4cccc'); // Light red break; case 'Needs Attention': range.setBackground('#fff2cc'); // Light yellow break; case 'No Recent Conversions': range.setBackground('#e6e6fa'); // Light purple break; default: range.setBackground(null); } } // 🕒 Helpers function getTodayDate() { const date = new Date(); return Utilities.formatDate(date, AdsApp.currentAccount().getTimeZone(), 'yyyyMMdd'); } function getDateXDaysAgo(days) { const date = new Date(); date.setDate(date.getDate() - days); return Utilities.formatDate(date, AdsApp.currentAccount().getTimeZone(), 'yyyyMMdd'); }
This walkthrough shows how to set up the conversion goal health checker for your Google Ads MCC account. Follow each step to get the system running, write to Google Sheets, and send alerts when something breaks.
Comece configurando o destino de saída.
Você implantará esse script em sua conta do MCC.
Na primeira vez que usar o script, você precisará autorizá-lo.
Você deve concluir essa etapa ou o script não será executado.
Dentro do script, revise e modifique o seguinte:
Você pode deixar o restante do script exatamente como está.
Execute-o uma vez manualmente para ter certeza de que tudo está funcionando.
Para tornar isso automático, configure-o para ser executado em uma programação recorrente.
O script será executado automaticamente e só o alertará quando algo estiver desligado.
Quando o script é executado, ele verifica todas as metas de conversão. Se alguma delas estiver inativa ou não estiver sendo atingida, você receberá um e-mail.
Esse script não é apenas um despejo de dados. Ele é um cão de guarda para cada meta de conversão em todo o seu MCC do Google Ads. Você é alertado quando algo quebra, trava ou deixa de ser rastreado. Quando tudo está bem, você recebe um silêncio.
Ele verifica todas as contas que você gerencia, sinaliza metas inativas ou com baixo desempenho e fornece um relatório filtrado e sem ruídos diretamente na sua caixa de entrada. A planilha do Google oferece uma visualização em tempo real do status da meta por conta, nome da meta e volume de conversão, com dicas visuais incorporadas.
Você não está vasculhando as interfaces. Você não está esperando até o final do mês para perceber que ficou cego. Você está no controle antes que isso se torne um problema.
Confira postagens semelhantes:
Confira postagens semelhantes:
If you manage multiple accounts, don’t miss our guide on tracking GA4 issues from numerous properties or exporting top-performing actual search terms with a lightweight script to refine your targeting.
Cansado de tentar adivinhar se seu rastreamento funciona? Deseja uma equipe que crie sistemas em vez de apenas relatórios?
Bright Vessel doesn’t just manage Google Ads; we engineer performance visibility at scale. Whether you need help deploying this script, integrating it into a larger automation stack, or building a custom analytics layer that tells you something, we’re ready.
Fale com a equipe que constrói o que outras agências falsificam.
"*" indica campos obrigatórios
"*" indica campos obrigatórios
"*" indica campos obrigatórios