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 Tabela Dinâmica Automática no Google Sheets com IA
Atualizado em: Abril de 2026
DM
Daniel Martins
Especialista em Performance Web
Analisar dados no Google Sheets não precisa ser uma tarefa manual e repetitiva. As Tabelas Dinâmicas (Pivot Tables) são ferramentas incríveis para resumir informações, mas criá-las e configurá-las do zero toda vez consome muito tempo.
E se você pudesse criar uma Base de Dados inteira e um Relatório Dinâmico em menos de 5 segundos, sem arrastar nenhuma linha ou coluna manualmente? Neste artigo, eu vou te ensinar como usar a Inteligência Artificial para programar isso para você usando o Google Apps Script.
Assista ao tutorial no vídeo abaixo para entender a lógica e, em seguida, copie os comandos mastigados logo abaixo:
1. O Prompt para a Inteligência Artificial
O segredo para um código que funciona de primeira está nas regras que você dita para a IA. Se você pedir apenas "faça uma tabela dinâmica", ela vai gerar erros estruturais. É preciso definir as colunas de grupo, de valor e a formatação exata.
Clique no botão abaixo para copiar a estrutura que eu testei e validei. Você pode colar isso no ChatGPT ou no Gemini:
O Prompt de Comando
Aja como um desenvolvedor Sênior Especialista em Google Apps Script. Preciso que você crie um código para gerar automaticamente uma "Base de Dados" e uma "Tabela Dinâmica (Pivot Table)" 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 "Base de Dados" e uma "Tabela Dinâmica (Pivot Table)" no Google Sheets.
⚠️ REGRAS TÉCNICAS OBRIGATÓRIAS:
Criação das Abas: O código deve criar duas abas. A primeira chamada "Dados Vendas" e a segunda chamada "Relatório Dinâmico" (apague as abas antigas se existirem para rodar limpo).
Preenchimento da Base de Dados: Na aba "Dados Vendas", crie uma tabela a partir de A1 com os cabeçalhos: [Data, Vendedor, Produto, Região, Valor da Venda]. Insira pelo menos 15 linhas de dados fictícios realistas. Formate a primeira linha como cabeçalho (fundo escuro, texto branco, negrito).
Criação da Tabela Dinâmica: Na aba "Relatório Dinâmico", use o comando nativo do Apps Script para Tabelas Dinâmicas (Range.createPivotTable(sourceData)). A origem dos dados será toda a tabela da aba "Dados Vendas".
Configuração da Tabela Dinâmica: > * Adicione um Grupo de Linhas (Row Group) usando a coluna "Produto".
Adicione um Grupo de Colunas (Column Group) usando a coluna "Região".
Adicione um Valor Dinâmico (Pivot Value) usando a coluna "Valor da Venda", configurado para somar (SpreadsheetApp.PivotTableSummarizeFunction.SUM).
Formatação: Formate as colunas de valores financeiros na aba de Dados e na aba do Relatório como moeda (R$ #,##0.00). Aplique setHiddenGridlines(true) na aba do Relatório Dinâmico para ficar com visual de dashboard limpo.
Me entregue apenas o código Apps Script completo, funcional e blindado, pronto para copiar, colar e executar.
2. O Código Apps Script Final
Para pular etapas e testar o resultado na hora, basta utilizar o código gerado que disponibilizo abaixo. Vá na sua planilha, clique em Extensões > Apps Script, cole o código e aperte o botão "Executar".
Código Apps Script (Tabela Dinâmica)
/**
* Script para gerar Base de Dados e Tabela Dinâmica automaticamente.
* Desenvolvido para: Google Sheets
* Autor: Especialista Google Apps Script
*/
function gerarDashboardVendas() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const NOME_ABA_DADOS = "Dados Vendas";
/**
* Script para gerar Base de Dados e Tabela Dinâmica automaticamente.
* Desenvolvido para: Google Sheets
* Autor: Especialista Google Apps Script
*/
function gerarDashboardVendas() {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const NOME_ABA_DADOS = "Dados Vendas";
const NOME_ABA_RELATORIO = "Relatório Dinâmico";
// --- 1. GESTÃO DE ABAS (Limpeza e Criação) ---
[NOME_ABA_RELATORIO, NOME_ABA_DADOS].forEach(nome => {
let aba = ss.getSheetByName(nome);
if (aba) {
// Se for a única aba, cria uma temporária para permitir a exclusão
if (ss.getSheets().length === 1) {
ss.insertSheet("temp_sheet");
}
ss.deleteSheet(aba);
}
});
const abaDados = ss.insertSheet(NOME_ABA_DADOS);
const abaRelatorio = ss.insertSheet(NOME_ABA_RELATORIO);
// Remover aba temporária se existir
let temp = ss.getSheetByName("temp_sheet");
if (temp) ss.deleteSheet(temp);
// --- 2. PREENCHIMENTO DA BASE DE DADOS ---
const cabecalhos = ["Data", "Vendedor", "Produto", "Região", "Valor da Venda"];
const dadosFicticios = [
[new Date(2023, 9, 1), "Ana Silva", "Smartphone", "Sudeste", 2500.00],
[new Date(2023, 9, 2), "Bruno Costa", "Notebook", "Sul", 4500.00],
[new Date(2023, 9, 3), "Carla Dias", "Monitor", "Norte", 1200.00],
[new Date(2023, 9, 4), "Diego Souza", "Teclado Mechanical", "Nordeste", 350.00],
[new Date(2023, 9, 5), "Elena Rocha", "Smartphone", "Centro-Oeste", 2500.00],
[new Date(2023, 9, 6), "Fabio Lima", "Notebook", "Sudeste", 4800.00],
[new Date(2023, 9, 7), "Gisele Paz", "Mouse Gamer", "Sul", 250.00],
[new Date(2023, 9, 8), "Hélio Mota", "Monitor", "Sudeste", 1150.00],
[new Date(2023, 9, 9), "Iara Cruz", "Smartphone", "Norte", 2300.00],
[new Date(2023, 9, 10), "João Melo", "Teclado Mechanical", "Sul", 350.00],
[new Date(2023, 9, 11), "Katia Ferraz", "Notebook", "Nordeste", 4500.00],
[new Date(2023, 9, 12), "Lucas Neto", "Mouse Gamer", "Centro-Oeste", 280.00],
[new Date(2023, 9, 13), "Marta Reis", "Smartphone", "Sudeste", 2600.00],
[new Date(2023, 9, 14), "Nuno Gomes", "Monitor", "Sul", 1300.00],
[new Date(2023, 9, 15), "Olívia Mar", "Notebook", "Sudeste", 4700.00]
];
// Inserir Cabeçalho e Dados
abaDados.getRange(1, 1, 1, cabecalhos.length).setValues([cabecalhos]);
abaDados.getRange(2, 1, dadosFicticios.length, dadosFicticios[0].length).setValues(dadosFicticios);
// --- 3. FORMATAÇÃO DA BASE DE DADOS ---
const rangeCabecalho = abaDados.getRange("A1:E1");
rangeCabecalho.setBackground("#2c3e50") // Azul escuro Charcoal
.setFontColor("#FFFFFF")
.setFontWeight("bold")
.setHorizontalAlignment("center");
// Formatar coluna de data e valor
abaDados.getRange("A2:A16").setNumberFormat("dd/mm/yyyy");
abaDados.getRange("E2:E16").setNumberFormat("R$ #,##0.00");
abaDados.autoResizeColumns(1, 5);
// --- 4. CRIAÇÃO DA TABELA DINÂMICA ---
const sourceRange = abaDados.getRange(1, 1, abaDados.getLastRow(), abaDados.getLastColumn());
const pivotTable = abaRelatorio.getRange("A1").createPivotTable(sourceRange);
// Configuração de Linhas: Produto (Coluna 3)
const rowGroup = pivotTable.addRowGroup(3);
rowGroup.showTotals(true);
// Configuração de Colunas: Região (Coluna 4)
const colGroup = pivotTable.addColumnGroup(4);
colGroup.showTotals(true);
// Configuração de Valores: Soma de Valor da Venda (Coluna 5)
pivotTable.addPivotValue(5, SpreadsheetApp.PivotTableSummarizeFunction.SUM)
.setDisplayName("Total de Vendas");
// --- 5. FORMATAÇÃO DO RELATÓRIO (DASHBOARD LOOK) ---
abaRelatorio.setHiddenGridlines(true);
// Formatar valores na Pivot como Moeda (Aplica a um range amplo para cobrir o crescimento da pivot)
abaRelatorio.getRange("B2:Z100").setNumberFormat("R$ #,##0.00");
// Ajuste fino visual
abaRelatorio.getRange("A1").setFontWeight("bold").setFontSize(12);
abaRelatorio.activate();
SpreadsheetApp.getUi().alert("Processo concluído! Base de dados e Relatório Dinâmico gerados com sucesso.");
}
Dica de Ouro: Com esse modelo pronto, você pode facilmente adaptar a variável "dadosFicticios" para ler informações dinâmicas de outras planilhas ou sistemas, transformando o seu Google Sheets em um software real de gestão.
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.