Este script para Google Sheets permite geocodificar grandes quantidades de endereços ou coordenadas (até milhares de linhas), superando as limitações de tempo de execução padrão do Google Apps Script através de um sistema de processamento em lotes inteligente.
- Processamento em Lotes: Divide grandes conjuntos de dados em lotes menores e gerenciáveis
- Geocodificação Bidirecional: Converte endereços em coordenadas (lat/long) e vice-versa
- Retomada Automática: Continua de onde parou caso o processamento seja interrompido
- Interface Amigável: Menu integrado no Google Sheets para fácil acesso
- Feedback Visual: Exibe o progresso em tempo real na planilha
- Tratamento de Erros: Identifica e registra problemas durante a geocodificação
- Baixo Consumo de API: Evita limites de taxa com pausas estratégicas
O script utiliza o serviço Maps do Google Apps Script para realizar geocodificações, mas supera as limitações padrão:
| Problema Original | Solução Implementada |
|---|---|
| Limite de 6 minutos de execução | Processamento em lotes com gatilhos programados |
| Limite de taxa da API | Pausas controladas entre solicitações |
| Falhas silenciosas | Sistema robusto de tratamento e registro de erros |
| Sem feedback de progresso | Célula de status mostrando etapas do processamento |
| Reinício do zero em caso de erro | Sistema de retomada para continuar de onde parou |
- Abra sua planilha no Google Sheets
- Vá para Extensões > Apps Script
- Cole o código do arquivo
geocoding.gsno editor - Salve e volte para sua planilha
- Atualize a página para visualizar o novo menu Geocode
-
Organize seus dados em três colunas:
- Coluna 1: Endereços (ou vazia para geocodificação reversa)
- Coluna 2: Latitude (ou vazia para geocodificação direta)
- Coluna 3: Longitude (ou vazia para geocodificação direta)
-
Selecione as três colunas, incluindo todas as linhas a processar
-
No menu Geocode, escolha:
- Geocodificar Endereços → Lat, Long (Em Lotes) para converter endereços em coordenadas
- Geocodificar Lat, Long → Endereços (Em Lotes) para conversão reversa
-
O processamento será iniciado em lotes. Uma célula de status será exibida à direita da seleção, mostrando o progresso.
- Utilize as opções "Em Lotes" no menu
- O processamento ocorrerá em lotes de 50 linhas (valor padrão, configurável)
- Caso o navegador seja fechado, o processo pode ser retomado ao reabrir a planilha
- Para reiniciar completamente, utilize "Redefinir Status do Processamento em Lotes"
- Limites da API: A API do Google Maps impõe um limite de 2.500 solicitações por dia para contas gratuitas
- Tempo de Processamento: A depender do volume de dados, o processo pode durar várias horas
- Região de Geocodificação: O script utiliza 'us' como região padrão. Modifique a função
getGeocodingRegion()para outro país (ex: 'br', 'uk') - Formato dos Endereços: Recomenda-se o uso de endereços completos (logradouro, cidade, estado, país)
Você pode personalizar os parâmetros de desempenho no início do script:
const BATCH_SIZE = 50; // Número de linhas por lote
const PAUSE_BETWEEN_BATCH = 1000; // Pausa entre lotes (em milissegundos)
const PAUSE_BETWEEN_REQUESTS = 200; // Pausa entre cada requisição (em milissegundos)ZERO_RESULTS: Endereço não encontradoOVER_QUERY_LIMIT: Muitas requisições em pouco tempoREQUEST_DENIED: Falha na autenticação da APIINVALID_REQUEST: Parâmetros inválidos ou incompletos
Este projeto é uma extensão do trabalho original de:
Para um guia prático em português sobre como utilizar este script no Google Sheets, assista ao seguinte vídeo: