Uma solução end-to-end (Sheets, Apps Script e Looker Studio) projetada para eliminar o "efeito bola de neve" em metas comerciais e centralizar a gestão de performance do time de vendas.
Contexto: O projeto originou-se de uma demanda real no setor de varejo de vestuário, no qual o lojista enfrentava dificuldades com a performance do time de vendas. O cenário era marcado por uma tendência de baixo engajamento no início do ciclo mensal, e uma tentativa desesperada de compensação (sprint) nos últimos dias para recuperação da meta.
Problema: Esse comportamento culminava no "Efeito Bola de Neve": metas diárias que se tornavam inviáveis no fim do mês. O resultado era a desmotivação e o não cumprimento do objetivo estabelecido, devido à falta de um sistema que reajustasse a rota estrategicamente ao decorrer dos dias trabalhados.
Objetivo: Desenvolver uma ferramenta que não apenas registrasse as vendas, mas engajasse a equipe através de um Algoritmo de Escalonamento, impulsionando a recuperação dos resultados em tempo hábil e mantendo a tangibilidade da meta mensal.
Solução
Planilhas comuns diluem um déficit de vendas por todo o restante do mês, impulsionando o "Efeito Bola de Neve". Já a presente planilha conta com um Algoritmo de Escalonamento que prioriza a recuperação de resultados dentro da semana de trabalho vigente.
Para ilustrar essa dinâmica, será considerado o estudo de caso abaixo, parametrizado para Dezembro de 2025:
Meta Mensal: R$ 26.000,00.
Dias de Trabalho: 26 dias*.
Meta Diária Inicial: R$ 1.000,00 (R$ 26.000,00/26).
Neste cenário, se o vendedor performa abaixo do esperado (ex.: R$ 900,00) no Dia 1 da Semana 1, gera-se um déficit de R$ -100,00, e o sistema reage imediatamente: em vez de diluir esse resultado aos demais dias de trabalho do mês (20), redistribui-se esse valor sobre os 5 dias restantes daquela semana, fazendo com que a meta diária da Semana 1 suba para R$ 1.020,00 (observe na imagem abaixo).
Fórmula: Nova Meta Diária = Meta Diária Vigente - (Resultado do Dia / Dias Restantes na Semana).
Aplicação: R$ 1.000,00 - (-R$ 100,00 / 5) = R$ 1.020,00.
*Nota: Os dias de trabalho são identificados e calculados automaticamente. O sistema estrutura a cronologia do mês (01/12 a 31/12), mapeia as folgas (como domingos e feriados específicos, ex.: Natal) e aplica a segmentação visual das semanas.
Ao identificar um déficit de R$ 100,00 no dia 01/12, o algoritmo ajusta imediatamente a meta diária do dia 02/12 para R$ 1.020,00.
Se o vendedor repetir o resultado de R$ 900,00 no 2º dia da semana, o déficit aumenta (R$ -120,00 em relação à R$ 1020,00), e o sistema recalcula a meta para os 4 dias remanescentes: R$ 1.020,00 - (-R$ 120,00 / 4) = R$ 1.050,00. Isso cria um senso de urgência progressivo, alertando o vendedor de que a meta precisa ser recuperada na própria semana, e não postergada para o decorrer do mês.
Caso a primeira semana encerre negativa (ex: déficit acumulado de R$ -2.400,00), o algoritmo aciona o cálculo retroativo. Considerando que restam 20 dias de trabalho no mês, o sistema redefine o patamar diário base:
Fórmula: Nova Meta Base = Meta Base Vigente - (Déficit Semanal / Dias Restantes no Mês)
Aplicação: R$ 1.000,00 - (- R$ 2.400,00 / 20) = R$ 1.120,00
Como resultado, a meta diária base para a Semana 2 sobe de R$ 1.000 para R$ 1.120, totalizando uma meta semanal de R$ 6.720 (6 dias). A partir deste novo patamar, o ciclo de escalonamento diário (explicado anteriormente) reinicia, assegurando que o objetivo continue desafiador, porém viável, o que mantém a equipe de vendas no jogo e engajada.
Seguindo a mesma lógica, se a 2ª semana também encerrar com déficit (ex.: R$ - 2800,00), a meta diária da semana seguinte será reajustada: R$ 1.120,00 - (- R$ 2.800,00 / 14) = R$ 1.320
Visando a escalabilidade segura do projeto, desenvolvi uma macro inteligente via Google Apps Script que automatiza a criação de novos ciclos mensais. Nomeada "Cópia e Proteção", ao ser executada, ela realiza três ações críticas para a "Virada de Mês":
Replicação: Gera uma cópia limpa da aba "Modelo" (que permanece oculta), preservando toda a lógica matemática para o novo mês.
Proteção de Fórmulas: O script identifica dinamicamente os intervalos críticos (cabeçalho e campos calculados) e aplica proteção contra edição.
Controle de Acesso: O código executa a função removeEditors, assegurando que apenas o proprietário do sistema tenha permissão para alterar as regras do algoritmo.
Clique em expandir para visualização do código implementado:
function CopyAndProtect() {
var ss = SpreadsheetApp.getActive();
var modelo = ss.getSheetByName('Modelo');
var baseName = 'MêsAA';
var newName = baseName;
var i = 1;
var me = Session.getEffectiveUser(); // Usuário que está executando o script
// Gera um nome único:
while (ss.getSheetByName(newName)) {
newName = baseName + ' (' + i + ')';
i++;
}
// Copia a aba “Modelo” e já renomeia para newName
var nova = modelo.copyTo(ss).setName(newName);
ss.setActiveSheet(nova);
// Lista dos intervalos a proteger
var rangesToProtect = [
'B4:C5',
'B7:H7',
'B8:C38',
'E8:E38',
'G8:H38',
'J7:N18'
];
// Aplica as proteções
rangesToProtect.forEach(function(rangeA1) {
var protection = nova.getRange(rangeA1).protect()
.setDescription('Proteção automática');
// Remove todos os editores e mantém apenas o usuário atual
protection.removeEditors(protection.getEditors());
if (!protection.canEdit()) {
protection.addEditor(me);
}
// Também garante que só o proprietário da planilha possa editar (opcional)
if (protection.canDomainEdit()) {
protection.setDomainEdit(false);
}
});
}
function myFunction() {
var spreadsheet = SpreadsheetApp.getActive();
spreadsheet.getRange('A1').activate();
};
Acesse abaixo a versão de demonstração da planilha (somente leitura) para consultar a estrutura de dados e as fórmulas que compõem o algoritmo. Sinta-se à vontade para fazer uma cópia e explorar as funcionalidades.
Construção do Banco de Dados
O projeto ganhou complexidade quando o lojista solicitou um dashboard para visão estratégica. Como os dados estavam fragmentados em múltiplos arquivos (cada vendedor possuía sua planilha isolada), a centralização das informações tornou-se um pré-requisito.
Para solucionar esse desafio sem custos adicionais de infraestrutura, construí um Pipeline ETL (Extract, Transform, Load) nativo no Google Sheets, consolidando uma base de dados única (Data Warehouse) que alimenta o painel:
Extract (Extração): Conexão dinâmica via função IMPORTRANGE para capturar dados de planilhas distintas em tempo real.
Transform (Transformação): Utilização da função QUERY para unificar as tabelas, filtrar inconsistências e estruturar o dataset final.
Load (Carregamento): Conexão direta desta base tratada ao Looker Studio.
Query de Consolidação:
=QUERY({
IMPORTRANGE("ID_Planilha_Vendedor_A"; "Dados!A:H");
IMPORTRANGE("ID_Planilha_Vendedor_B"; "Dados!A:H");
IMPORTRANGE("ID_Planilha_Vendedor_C"; "Dados!A:H")})
Com os dados tratados e centralizados, a etapa final foi a inteligência visual. O painel no Looker Studio foi desenvolvido para oferecer ao gestor uma visão 360º da operação comercial, com destaque para KPIs estratégicos, análise temporal e granularidade (filtros dinâmicos por vendedor, mês e dia da semana), substituindo a gestão baseada em "palpites" por uma cultura Data-Driven.
Interaja com o Dashboard abaixo (alimentado com dados fictícios) para testar a responsividade dos filtros e a clareza das visualizações.