Reviews técnicos, tutoriais de automação e as melhores ferramentas para escalar seu negócio na web em 2026.
Planilhas e Automação
Como Criar uma Planilha de Orçamento Automática no Google Sheets com IA
Atualizado em: Abril de 2026
DM
Daniel Martins
Especialista em Performance Web
Criar planilhas complexas com dashboards, gráficos e formatação condicional sempre exigiu horas de trabalho manual ou conhecimentos avançados em fórmulas. Mas com a Inteligência Artificial, esse jogo virou.
Neste tutorial, eu vou te provar que você não precisa ser um programador para criar um sistema premium no Google Sheets. Nós vamos usar o Google Apps Script integrado a um comando simples de IA para gerar uma Planilha de Orçamento de Obra do zero, em segundos.
Assista ao passo a passo no vídeo abaixo e, logo em seguida, copie os comandos que eu deixei mastigados para você:
1. O Segredo (Engenharia de Prompt)
A mágica por trás dessa automação não é o código em si, mas sim como você pede para a IA (como o Gemini ou ChatGPT) criar esse código. Se você for específico e detalhar as cores, o design e as regras técnicas, a IA te entrega um sistema impecável.
Clique no botão abaixo para copiar o meu Prompt exato e cole na sua IA favorita:
O Prompt Mágico
Aja como um desenvolvedor Sênior Especialista em Google Apps Script. Preciso que você crie um código para gerar automaticamente uma "Planilha de Orçamento de Obra Residencial V2" no Google Sheets...
Aja como um desenvolvedor Sênior Especialista em Google Apps Script.
Preciso que você crie um código para gerar automaticamente uma "Planilha de Orçamento de Obra Residencial V2" no Google Sheets. O design deve ter aspecto de sistema premium: fundo cinza claro (#F8F9FA), sem linhas de grade (setHiddenGridlines(true)) e um cabeçalho principal escuro (#1E293B) centralizado.
Estrutura da Tabela:
Colunas: [Etapa da Obra, Descrição Detalhada, Unidade, Quantidade, Custo Unitário, Custo Total, Data Prevista]
Insira 10 linhas de dados fictícios realistas da construção civil.
⚠️ REGRAS TÉCNICAS OBRIGATÓRIAS (ANTI-BUG PARA PLANILHAS PT-BR):
Cards de Resumo (KPIs): Crie 3 cartões no topo: "CUSTO TOTAL DA OBRA", "GASTO EM SERVIÇOS" e "GASTO EM MATERIAIS".
O Segredo da Mesclagem: Para evitar erros de #ERROR!, você DEVE primeiro mesclar a área do valor do cartão (ex: B6:C6.merge()) e aplicar a fórmula APENAS na primeira célula (ex: B6.setFormula(...)).
Técnica Ninja de Idioma (CRÍTICO): Planilhas no Brasil quebram com fórmulas que contém vírgulas via Apps Script. Para os cartões, NÃO USE SUMIF com vírgulas. Você DEVE usar .setFormula() com a função =SUMPRODUCT usando sinais de multiplicação * para evitar qualquer vírgula.
Exemplo de Serviços: =SUMPRODUCT((D10:D19="Serviço")*G10:G19)
Exemplo de Materiais: =SUMPRODUCT((D10:D19<>"Serviço")*G10:G19)
Fórmulas da Tabela: Use .setFormulas() para preencher a coluna "Custo Total" multiplicando Quantidade por Custo Unitário.
Formatação Condicional: Crie uma regra via script que pinte o fundo de vermelho escuro (#7F1D1D) e a letra de branco para Valores Totais acima de 10.000.
Gráfico: Insira um Gráfico de Colunas largo posicionado abaixo da tabela (na linha 21), mostrando a "Análise de Custo por Etapa".
Estética: Formate os valores como moeda brasileira (R$ #,##0.00) e alinhe a coluna "Descrição" à esquerda. Entregue apenas o código final em Javascript, pronto para uso.
2. O Código Final Pronto para Uso
Se você quiser pular a etapa da IA e já testar a ferramenta funcionando, eu deixei o código final aqui embaixo. Basta copiar, abrir uma planilha em branco, ir em Extensões > Apps Script, colar o código e clicar em "Executar".
Código Apps Script (Javascript)
function criarOrcamentoObraPremium() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var nomeAba = "Orçamento V2";
var abaAntiga = ss.getSheetByName(nomeAba);
if (abaAntiga) ss.deleteSheet(abaAntiga);
function criarOrcamentoObraPremium() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var nomeAba = "Orçamento V2";
var abaAntiga = ss.getSheetByName(nomeAba);
if (abaAntiga) ss.deleteSheet(abaAntiga);
var aba = ss.insertSheet(nomeAba);
// Visual Limpo e Premium
aba.setHiddenGridlines(true);
aba.getRange(1, 1, 100, 15).setFontFamily("Arial").setBackground("#F8F9FA");
// Cabeçalho Principal
aba.getRange("B2:H3").merge()
.setValue("🏗️ PLANILHA DE ORÇAMENTO DE OBRA RESIDENCIAL")
.setBackground("#1E293B").setFontColor("#FFFFFF").setFontSize(16).setFontWeight("bold")
.setHorizontalAlignment("center").setVerticalAlignment("middle");
// ==========================================
// 3 CARDS DE RESUMO (Técnica Ninja Anti-Erro)
// ==========================================
// Card 1: CUSTO TOTAL DA OBRA
aba.getRange("B5:C6").setBackground("#FFFFFF").setBorder(true,true,true,true,false,false,"#CBD5E1",SpreadsheetApp.BorderStyle.SOLID);
aba.getRange("B5:C5").merge().setValue("CUSTO TOTAL DA OBRA").setFontColor("#64748B").setFontSize(9).setFontWeight("bold").setHorizontalAlignment("center");
aba.getRange("B6:C6").merge();
// Fórmula simples sem vírgulas
aba.getRange("B6").setFormula('=SUM(G10:G19)');
aba.getRange("B6:C6").setFontColor("#0F172A").setFontSize(14).setFontWeight("bold").setHorizontalAlignment("center").setNumberFormat("R$ #,##0.00");
// Card 2: GASTO EM SERVIÇOS
aba.getRange("D5:E6").setBackground("#FFFFFF").setBorder(true,true,true,true,false,false,"#CBD5E1",SpreadsheetApp.BorderStyle.SOLID);
aba.getRange("D5:E5").merge().setValue("GASTO EM SERVIÇOS").setFontColor("#64748B").setFontSize(9).setFontWeight("bold").setHorizontalAlignment("center");
aba.getRange("D6:E6").merge();
// Técnica Ninja: SOMARPRODUTO com multiplicação (0 vírgulas para o Google não se confundir)
aba.getRange("D6").setFormula('=SUMPRODUCT((D10:D19="Serviço")*G10:G19)');
aba.getRange("D6:E6").setFontColor("#DC2626").setFontSize(14).setFontWeight("bold").setHorizontalAlignment("center").setNumberFormat("R$ #,##0.00");
// Card 3: GASTO EM MATERIAIS
aba.getRange("F5:H6").setBackground("#FFFFFF").setBorder(true,true,true,true,false,false,"#CBD5E1",SpreadsheetApp.BorderStyle.SOLID);
aba.getRange("F5:H5").merge().setValue("GASTO EM MATERIAIS").setFontColor("#64748B").setFontSize(9).setFontWeight("bold").setHorizontalAlignment("center");
aba.getRange("F6:H6").merge();
// Técnica Ninja: SOMARPRODUTO com multiplicação (0 vírgulas)
aba.getRange("F6").setFormula('=SUMPRODUCT((D10:D19<>"Serviço")*G10:G19)');
aba.getRange("F6:H6").setFontColor("#16A34A").setFontSize(14).setFontWeight("bold").setHorizontalAlignment("center").setNumberFormat("R$ #,##0.00");
// ==========================================
// TABELA DE DADOS
// ==========================================
var headers = [["Etapa da Obra", "Descrição Detalhada", "Unidade", "Quantidade", "Custo Unitário", "Custo Total", "Data Prevista"]];
aba.getRange("B9:H9").setValues(headers)
.setBackground("#334155").setFontColor("#FFFFFF").setFontWeight("bold").setHorizontalAlignment("center")
.setBorder(true,true,true,true,true,true,"#1E293B", SpreadsheetApp.BorderStyle.SOLID);
var dados = [
["Serviços Preliminares", "Limpeza do Terreno", "Serviço", 1, 2500.00, "", "01/05/2026"],
["Fundação", "Escavação e Baldrame", "Serviço", 1, 15000.00, "", "10/05/2026"],
["Estrutura", "Concreto Usinado", "m³", 35, 450.00, "", "25/05/2026"],
["Estrutura", "Aço CA-50", "kg", 1200, 8.50, "", "28/05/2026"],
["Alvenaria", "Tijolo Baiano", "Milheiro", 8, 850.00, "", "15/06/2026"],
["Alvenaria", "Mão de Obra Alvenaria", "Serviço", 1, 12000.00, "", "20/06/2026"],
["Cobertura", "Telha Cerâmica", "m²", 150, 45.00, "", "10/07/2026"],
["Instalações", "Fiação Elétrica Completa", "Serviço", 1, 8500.00, "", "05/08/2026"],
["Acabamento", "Porcelanato Interno", "m²", 120, 110.00, "", "20/08/2026"],
["Acabamento", "Pintura Geral", "Serviço", 1, 11500.00, "", "10/09/2026"]
];
aba.getRange(10, 2, 10, 7).setValues(dados).setBackground("#FFFFFF")
.setBorder(true,true,true,true,true,true,"#CBD5E1", SpreadsheetApp.BorderStyle.SOLID);
// Fórmulas Matemáticas (Qtd * Custo Unitário)
var formulas = [];
for(var i = 10; i <= 19; i++) {
formulas.push(["=E" + i + "*F" + i]);
}
aba.getRange(10, 7, 10, 1).setFormulas(formulas);
// Formatações e Alinhamentos
aba.getRange("F10:G19").setNumberFormat("R$ #,##0.00");
aba.getRange("C10:C19").setHorizontalAlignment("left");
aba.getRange("D10:F19").setHorizontalAlignment("center");
aba.getRange("H10:H19").setHorizontalAlignment("center");
// Formatação Condicional (> 10.000)
var rangeCustoTotal = aba.getRange("G10:G19");
var regraMaiorDezMil = SpreadsheetApp.newConditionalFormatRule()
.whenNumberGreaterThan(10000)
.setBackground("#7F1D1D")
.setFontColor("#FFFFFF")
.setRanges([rangeCustoTotal])
.build();
aba.setConditionalFormatRules([regraMaiorDezMil]);
// Ajuste de Largura
aba.setColumnWidth(1, 20);
aba.setColumnWidth(2, 160);
aba.setColumnWidth(3, 230);
aba.setColumnWidth(4, 90);
aba.setColumnWidth(5, 100);
aba.setColumnWidth(6, 120);
aba.setColumnWidth(7, 130);
aba.setColumnWidth(8, 110);
// ==========================================
// GRÁFICO LARGO ABAIXO DA TABELA
// ==========================================
var grafico = aba.newChart()
.asColumnChart()
.addRange(aba.getRange("B9:B19"))
.addRange(aba.getRange("G9:G19"))
.setOption('title', 'ANÁLISE DE CUSTO POR ETAPA DA OBRA')
.setOption('colors', ['#1E293B'])
.setOption('legend', {position: 'none'})
.setOption('chartArea', {left: '8%', top: '15%', width: '90%', height: '70%'})
.setPosition(21, 2, 0, 0)
.build();
aba.insertChart(grafico);
}
Dica de Ouro: Lembre-se de conceder as permissões que o Google pede na primeira vez que você for executar o script. É um aviso padrão de segurança, basta clicar em "Avançado" e prosseguir.
Nós utilizamos cookies para melhorar a sua experiência, otimizar o desempenho e personalizar anúncios (Google AdSense). Ao continuar navegando, você concorda com a nossa
Política de Privacidade e Termos de Uso.