- Windows 10/11 con permisos de administrador
- Python 3.8+ instalado → Descargar aquí
- Archivo de credenciales:
generador-docs-31f4b831a196.json
- Google Sheets configurado con los datos
- Conexión a Internet estable
📁 1-data-converter-python/
├── 📄 main.py
├── 📄 requirements.txt
├── 🔑 generador-docs-31f4b831a196.json ← ¡IMPORTANTE!
├── 🎯 setup.bat
├── 🚀 ejecutar.bat
├── 📊 stats.bat
├── 📥 importar.bat
├── 🏗️ crear.bat
├── 🧪 test.bat
└── 🧹 limpiar.bat
- Abrir carpeta
1-data-converter-python
- Doble clic en
setup.bat
- Esperar que termine la instalación
- Listo ✅
# Doble clic en:
ejecutar.bat
¿Qué hace?
- ✅ Crea la base de datos
- ✅ Importa todos los datos desde Google Sheets
- ✅ Muestra estadísticas finales
- ✅ ¡Todo en uno!
# Doble clic en:
stats.bat
¿Cuándo usar?
- Para ver cuántos registros tienes
- Después de hacer cambios
- Para verificar que todo esté bien
# Doble clic en:
importar.bat
¿Cuándo usar?
- Cuando cambies datos en Google Sheets
- Para actualizar sin recrear todo
- Seguro: no duplica datos
# Doble clic en:
test.bat
¿Para qué?
- Verificar que Google Sheets funciona
- Probar la base de datos
- Diagnosticar problemas
nombre | telefono | |
---|---|---|
Juan Pérez | 70123456 | juan@email.com |
María López | 70234567 | maria@email.com |
nombre | codigo_coordinador | jefe_nombre | telefono | |
---|---|---|---|---|
Carlos Mamani | COORD001 | Juan Pérez | 70345678 | carlos@email.com |
Ana García | COORD002 | María López | 70456789 | ana@email.com |
nombre_grupo | coordinador_codigo | descripcion |
---|---|---|
Grupo Norte | COORD001 | Zona norte de La Paz |
Grupo Sur | COORD002 | Zona sur de La Paz |
nombre | codigo |
---|---|
La Paz | LP |
Cochabamba | CB |
Santa Cruz | SC |
nombre | codigo | departamento_codigo |
---|---|---|
Murillo | MUR | LP |
Cercado | CER | CB |
nombre | codigo | provincia_codigo |
---|---|---|
La Paz | LP001 | MUR |
El Alto | LP002 | MUR |
nombre | codigo | municipio_codigo |
---|---|---|
La Paz Centro | AE001 | LP001 |
El Alto Norte | AE002 | LP002 |
nombre | direccion | tipo | asiento_codigo | latitud | longitud |
---|---|---|---|---|---|
Escuela Central | Av. 6 de Agosto 123 | urbano | AE001 | -16.5000 | -68.1193 |
Colegio Rural | Comunidad Achocalla | rural | AE002 | -16.5500 | -68.1500 |
placa | marca | modelo | anio |
---|---|---|---|
ABC-123 | Toyota | Hilux | 2020 |
DEF-456 | Nissan | Navara | 2019 |
nombre | cedula | licencia | telefono | vehiculo_placa |
---|---|---|---|---|
Pedro Quispe | 12345678 | B-123456 | 70567890 | ABC-123 |
Luis Condori | 87654321 | B-654321 | 70678901 | DEF-456 |
nombre | cedula | telefono | tipo_operador | grupo_nombre | recinto_nombre | vehiculo_placa | fecha_inicio | fecha_fin |
---|---|---|---|---|---|---|---|---|
Ana Mamani | 11111111 | 70111111 | rural | Grupo Norte | Escuela Central | ABC-123 | 2024-02-01 | 2024-02-28 |
José López | 22222222 | 70222222 | urbano | Grupo Sur | Colegio Rural | DEF-456 | 2024-02-01 | 2024-02-28 |
Si tus hojas se llaman diferente, edita config.py
:
# En config.py, línea ~15
SHEET_NAMES = {
'jefes': 'MisJefes', # Cambiar 'Jefes' por 'MisJefes'
'coordinadores': 'Coordinadores',
'grupos': 'MisGrupos', # Cambiar 'Grupos' por 'MisGrupos'
# ... etc
}
Si tus columnas se llaman diferente, edita config.py
:
# En config.py, línea ~35
COLUMN_MAPPING = {
'operadores': {
'nombre': 'nombre_completo', # Tu columna se llama 'nombre_completo'
'cedula': 'ci', # Tu columna se llama 'ci'
'telefono': 'celular', # Tu columna se llama 'celular'
# ... etc
}
}
# En config.py, línea ~5
DATABASE_PATH = "C:/MisDocumentos/operadores.db" # Tu ruta personalizada
-
Preparar Google Sheets
- Crear spreadsheet con las 11 hojas
- Llenar datos siguiendo el formato de arriba
- Compartir con el service account
-
Instalar Sistema
# Doble clic: setup.bat
-
Ejecutar Conversión
# Doble clic: ejecutar.bat
-
Ver Resultados
✅ Base de datos creada en: ../database/operadores.db 📊 Total: 850 registros importados
-
Modificar Google Sheets
- Agregar nuevos operadores
- Cambiar teléfonos
- Actualizar fechas
-
Reimportar Datos
# Doble clic: importar.bat
-
Verificar Cambios
# Doble clic: stats.bat
💡 Solución:
- Instalar Python desde https://python.org/downloads/
- ✅ IMPORTANTE: Marcar "Add Python to PATH"
- Reiniciar CMD
- Ejecutar
setup.bat
otra vez
💡 Solución:
- Verificar que
generador-docs-31f4b831a196.json
esté en la carpeta - Verificar que el nombre sea exacto (sin espacios extra)
- Si tienes otro nombre, cambiar en
config.py
:CREDENTIALS_FILE = "mi-archivo-credenciales.json"
💡 Solución:
- Abrir el archivo de credenciales
- Buscar el campo
"client_email"
- Copiar el email (ej:
mi-servicio@proyecto.iam.gserviceaccount.com
) - En Google Sheets → Compartir → Pegar el email → Dar permisos de "Editor"
💡 Solución:
- El sistema saltará hojas faltantes automáticamente
- Para usar nombres diferentes, modificar
SHEET_NAMES
enconfig.py
- Verificar mayúsculas/minúsculas exactas
💡 Solución:
- Cerrar cualquier programa que use la base de datos
- Reiniciar el proceso
- Si persiste, ejecutar
limpiar.bat
y empezar de nuevo
🚀 SISTEMA 1: CONVERSIÓN DE DATOS
==================================================
⏰ Ejecutado: 2024-02-15 14:30:25
🏗️ Creando estructura...
✅ Tabla 'jefe' creada/verificada
✅ Tabla 'coordinador' creada/verificada
... (todas las tablas)
✅ Esquema de base de datos listo
📥 Importando datos...
✅ Conectado a Google Sheets
📊 Jefes: 5 registros
👔 Procesando jefes...
✅ 5 jefes procesados
📊 Coordinadores: 15 registros
👥 Procesando coordinadores...
✅ 15 coordinadores procesados
... (todos los tipos de datos)
📊 ESTADÍSTICAS DE LA BASE DE DATOS
============================================================
👔 Jefe : 5 registros
👥 Coordinador : 15 registros
🏢 Grupo : 25 registros
🏛️ Departamento : 9 registros
🌄 Provincia : 48 registros
🏘️ Municipio : 339 registros
🗳️ Asiento Electoral : 120 registros
🏫 Recinto : 245 registros
🚗 Vehiculo : 45 registros
🚛 Chofer : 45 registros
👷 Operador : 150 registros
============================================================
🎯 TOTAL: 1046 registros
============================================================
🎉 Proceso completado exitosamente!
💾 Base de datos guardada en: ..\database\operadores.db
- No duplica datos: Usa campos únicos (cédula, código, etc.)
- Actualiza inteligentemente: Solo cambia datos modificados
- Preserva relaciones: Los IDs se mantienen estables
- Rollback automático: Si hay error, revierte cambios
- Modificas datos en Google Sheets
- Ejecutas
importar.bat
- El sistema:
- Encuentra registros existentes por campo único
- Actualiza solo los campos que cambiaron
- Inserta solo los registros nuevos
- Mantiene todas las relaciones intactas
proyecto/
├── 1-data-converter-python/
│ ├── venv/ ← Entorno virtual
│ ├── __pycache__/ ← Cache de Python
│ ├── main.py ← Código principal
│ ├── generador-docs-31f4b831a196.json ← Credenciales
│ └── *.bat ← Scripts de ejecución
│
├── database/
│ └── operadores.db ← ¡BASE DE DATOS CREADA! 🎯
│
├── 2-web-consultas/ ← (Sistema siguiente)
└── 3-doc-generator/ ← (Sistema siguiente)
Una vez que tengas operadores.db
creado:
- Base de datos SQLite funcional
- Todos los datos importados y organizados
- Relaciones entre tablas establecidas
- Interfaz web para buscar datos
- Consultas como "¿qué operador usa qué vehículo?"
- Dashboard con estadísticas
- Generar documentos masivos para operadores
- Plantillas Word y Excel personalizables
- Exportación a PDF
# Crear un archivo "actualizar_diario.bat":
@echo off
cd "C:\ruta\al\sistema\1-data-converter-python"
call importar.bat
- Abrir Programador de tareas de Windows
- Crear tarea básica
- Programa: Tu archivo
actualizar_diario.bat
- Programar: Diariamente a las 6:00 AM
# En backup.bat:
@echo off
copy "..\database\operadores.db" "..\backup\operadores_%date%.db"
echo Backup creado: operadores_%date%.db
Si sabes SQL, puedes consultar directamente:
-- Ver operadores con sus vehículos
SELECT o.nombre, o.