El objetivo es construir una pequeña aplicación financiera personal que detecte movimientos, permita clasificarlos desde el celular y actualice automáticamente tus presupuestos sin tener que registrar cada compra manualmente.
¿Cómo funciona este control de gastos con Telegram?
Muchos bancos, tarjetas y billeteras digitales envían un correo electrónico cuando realizas una compra. Este proyecto aprovecha esas notificaciones para ayudarte a registrar automáticamente tus gastos.
El funcionamiento general es el siguiente:
- Realizas una compra.
- Tu banco envía una notificación a Gmail.
- Google Apps Script revisa automáticamente los correos.
- El sistema identifica un posible movimiento y su valor.
- El movimiento se registra en Google Sheets.
- Telegram te envía una notificación.
- Seleccionas desde qué presupuesto salió el dinero.
- El presupuesto se actualiza automáticamente.
Por ejemplo, podrías recibir en Telegram:
💳 Nuevo movimiento SUPERMERCADO XYZ $25.000 ¿De dónde salió el dinero? 🛒 Mercado · queda $500.000 🚕 Transporte · queda $200.000 🎮 Diversión · queda $150.000 💳 Otros · queda $100.000
Solo tienes que tocar uno de los botones y el gasto será asignado al presupuesto correspondiente.
¿Qué necesitas para crear el sistema?
No necesitas instalar un servidor ni tener conocimientos avanzados de programación. Para seguir el tutorial necesitas:
- Una cuenta de Google.
- Una cuenta de Gmail que reciba las notificaciones de tus compras.
- Google Drive.
- Google Sheets.
- Google Apps Script.
- Una cuenta de Telegram.
¿Tengo que utilizar mi Gmail principal?
No. Una opción interesante es crear una cuenta de Gmail específicamente para esta automatización y reenviar allí las notificaciones financieras que quieras procesar.
De esta manera puedes mantener el proyecto separado de tu correo principal.
Descargar los archivos del control de gastos
Para hacer el proceso mucho más sencillo preparé los archivos base del proyecto. La idea es que no tengas que construir toda la estructura desde cero: puedes descargarla, copiarla y personalizarla.
Descargar proyecto completo desde Google Drive
El paquete incluye:
- CONTROL_GASTOS_BASICO.xlsx
- Code.gs
- gmail.gs
- movimientos.gs
- telegram.gs
- utilidades.gs
- README con las instrucciones básicas.
Paso 1: subir el control de gastos a Google Drive
Descarga el archivo CONTROL_GASTOS_BASICO.xlsx incluido en los recursos y súbelo a tu Google Drive.
Puedes abrirlo utilizando Google Sheets. El archivo contiene tres hojas principales:
- CONFIGURACION: presupuestos y categorías.
- FUENTES: correos que el sistema debe revisar.
- MOVIMIENTOS: historial de movimientos detectados.
Una de las características principales del proyecto es que la mayoría de las personalizaciones se realizan directamente desde estas hojas y no modificando el código.
Paso 2: configurar las categorías y presupuestos
Abre la pestaña CONFIGURACION. Encontrarás una estructura similar a esta:
| clave | nombre | presupuesto | gastado | emoji | activo |
|---|---|---|---|---|---|
| mercado | Mercado | 500000 | 0 | 🛒 | SI |
| transporte | Transporte | 200000 | 0 | 🚕 | SI |
| diversion | Diversión | 150000 | 0 | 🎮 | SI |
| otros | Otros | 100000 | 0 | 💳 | SI |
¿Cómo agregar una categoría nueva?
Supongamos que quieres separar los gastos de tu mascota. Puedes agregar simplemente una nueva fila:
mascotas | Mascotas | 80000 | 0 | 🐶 | SI
No necesitas modificar Apps Script. El sistema leerá las categorías activas directamente desde Google Sheets y generará los botones de Telegram automáticamente.
Si temporalmente no quieres utilizar una categoría, cambia SI por NO.
Paso 3: configurar las notificaciones de tu banco en Gmail
Ahora abre la pestaña FUENTES.
Aquí indicarás qué correos puede considerar el sistema:
| nombre | correo_remitente | palabras_clave | excluir | activo |
|---|---|---|---|---|
| Mi Banco | alertas@ejemplo.com | compra,pago | promocion,oferta,descuento | SI |
Cómo encontrar el correo remitente de tu banco
Busca en Gmail una notificación real que hayas recibido después de realizar una compra. Revisa desde qué dirección fue enviado el mensaje y copia esa dirección en correo_remitente.
¿Qué son las palabras clave?
Son palabras que normalmente aparecen cuando realmente existe un movimiento. Dependiendo de tu banco pueden ser términos como:
compra,pago,pagaste
¿Para qué sirve la columna excluir?
No queremos convertir cualquier correo del banco en un gasto. El mismo remitente también podría enviarnos publicidad.
Por eso podemos excluir palabras como:
promocion,oferta,descuento
La combinación de remitente, palabras clave y exclusiones ayuda a reducir falsas detecciones.
Paso 4: crear un bot de Telegram con BotFather
Ahora necesitamos crear el bot que utilizaremos como interfaz para clasificar nuestros gastos.
- Abre Telegram.
- Busca BotFather.
- Inicia la conversación.
- Envía el comando /newbot.
- Escribe el nombre que quieres utilizar.
- Selecciona un nombre de usuario disponible terminado en bot.
BotFather te entregará un token. Lo utilizaremos posteriormente para conectar Google Apps Script con Telegram.
Si vas a publicar capturas o videos mostrando un token real, es recomendable regenerarlo después de la grabación.
Paso 5: obtener el Telegram Chat ID
Abre el bot que acabas de crear, pulsa Start y envíale un mensaje, por ejemplo:
Hola
Después consulta la API de Telegram utilizando tu token:
https://api.telegram.org/botTU_TOKEN/getUpdates
Sustituye TU_TOKEN por el token generado por BotFather.
En la respuesta encontrarás una estructura similar a:
"chat": {
"id": 123456789,
"type": "private"
}
Ese número es tu TELEGRAM_CHAT_ID. Guárdalo porque lo necesitaremos en los siguientes pasos.
Paso 6: crear el proyecto en Google Apps Script
Ahora crea un proyecto de Google Apps Script. Puedes hacerlo desde tu Google Sheet o desde la página de Apps Script.
El proyecto utiliza estos archivos:
Code.gs gmail.gs movimientos.gs telegram.gs utilidades.gs
Crea cada archivo dentro del proyecto y copia el contenido correspondiente de los recursos descargados.
La intención de esta versión es que no tengas que modificar internamente estos archivos para agregar categorías o fuentes. Esa configuración se realiza principalmente desde Google Sheets.
Paso 7: configurar Telegram y Google Sheets en Script Properties
En lugar de escribir datos como el token directamente dentro del código, utilizaremos las Propiedades del script.
Necesitamos crear cuatro propiedades:
| Propiedad | Valor |
|---|---|
| TELEGRAM_BOT_TOKEN | Token entregado por BotFather |
| TELEGRAM_CHAT_ID | ID obtenido mediante getUpdates |
| ID_HOJA | ID de tu Google Sheet |
| WEB_APP_URL | URL que obtendremos al desplegar la Web App |
¿Cómo obtener el ID de Google Sheets?
Si la dirección de tu hoja es similar a:
https://docs.google.com/spreadsheets/d/1ABC123XYZ456/edit
El ID es la parte situada entre /d/ y /edit:
1ABC123XYZ456
Ese valor debe guardarse como ID_HOJA.
Paso 8: desplegar Google Apps Script como Web App
Para que Telegram pueda enviar información al proyecto necesitamos publicar Apps Script como una aplicación web.
- Haz clic en Implementar.
- Selecciona Nueva implementación.
- Selecciona Aplicación web.
- Configura la ejecución con tu cuenta.
- Configura el acceso necesario para que Telegram pueda comunicarse con la aplicación.
- Haz clic en Implementar.
Google generará una URL que termina normalmente en /exec.
Copia esa dirección y guárdala en:
WEB_APP_URL
Paso 9: conectar Telegram con Apps Script mediante webhook
El webhook permite que Telegram informe a nuestro proyecto cuando pulsamos un botón o enviamos un comando.
Con las propiedades anteriores configuradas, selecciona en Apps Script la función:
configurarWebhook()
y ejecútala una vez.
A partir de ese momento Telegram podrá comunicarse con la Web App del proyecto.
Paso 10: hacer la primera prueba del control de gastos
Antes de esperar una notificación real del banco podemos comprobar que Google Sheets y Telegram están correctamente conectados.
Ejecuta:
probarSistema()
El proyecto generará un movimiento ficticio de prueba. Deberías recibir en Telegram algo similar a:
💳 Nuevo movimiento SUPERMERCADO DEMO $25.000 ¿De dónde salió el dinero?
Debajo aparecerán automáticamente los presupuestos activos que tengas configurados en Google Sheets.
Selecciona, por ejemplo, Mercado. El movimiento quedará registrado y el gasto se descontará de ese presupuesto.
Cómo controlar tus gastos desde Telegram
Una vez configurado, el objetivo es que no tengas que abrir la hoja cada vez que realizas una compra.
Cuando el sistema detecte una notificación válida, Telegram te preguntará de qué presupuesto salió el dinero.
Consultar cuánto dinero queda
Envía al bot:
/status
Obtendrás un resumen parecido a:
📊 Presupuestos 🛒 Mercado: $320.000 🚕 Transporte: $85.000 🎮 Diversión: $120.000 💳 Otros: $60.000
Aumentar un presupuesto
También puedes utilizar:
/aumentar 50000
Telegram te preguntará a qué presupuesto quieres agregar los $50.000.
¿Qué ocurre si un presupuesto no tiene suficiente dinero?
El proyecto permite distribuir una misma compra entre varios presupuestos.
Supongamos que realizaste una compra de $70.000, pero Mercado solamente tiene $20.000 disponibles.
Si seleccionas Mercado:
- El sistema utiliza los $20.000 disponibles.
- Mercado queda en $0.
- Telegram detecta que todavía faltan $50.000.
- Te vuelve a mostrar los presupuestos disponibles.
- Seleccionas de dónde salen los $50.000 restantes.
De esta forma una compra puede distribuirse entre diferentes categorías sin perder el control del valor total.
Cómo evitar movimientos duplicados
Cada correo de Gmail tiene un identificador. El proyecto utiliza ese identificador para recordar qué mensajes ya fueron procesados.
Esto es importante porque evita que una misma notificación se convierta varias veces en el mismo gasto.
Además, el control de duplicados no depende exclusivamente de conservar todas las filas antiguas de la hoja MOVIMIENTOS.
Cómo personalizar este control financiero
Este proyecto está pensado deliberadamente como una base sencilla y configurable.
Una vez funcionando puedes ampliarlo según tus necesidades. Por ejemplo, podrías agregar:
- Nuevas categorías de gastos.
- Más bancos o billeteras digitales.
- Resúmenes mensuales.
- Comparaciones entre presupuesto y gasto real.
- Gráficos.
- Alertas cuando un presupuesto esté próximo a agotarse.
- Nuevos comandos de Telegram.
Como la base ya está construida, incluso puedes utilizar una herramienta de inteligencia artificial para ayudarte a desarrollar nuevas funciones sobre el proyecto.
Preguntas frecuentes sobre el control de gastos con Telegram
¿Necesito saber programar?
No necesitas conocimientos avanzados. Los archivos base ya contienen la lógica principal y la configuración cotidiana se realiza desde Google Sheets.
¿Puedo agregar mis propias categorías?
Sí. Puedes crear categorías como Mascotas, Viajes, Restaurantes, Hogar o las que necesites directamente en la hoja CONFIGURACION.
¿Funciona con cualquier banco?
El sistema no depende del nombre de un banco específico. Debes configurar el correo remitente y las palabras que aparecen habitualmente en sus notificaciones. La compatibilidad final dependerá del formato de los correos que recibas.
¿Cómo detecta una compra?
La versión básica combina el remitente configurado, palabras relacionadas con movimientos, exclusiones y la detección de un valor monetario.
¿Puedo utilizar una cuenta de Gmail diferente?
Sí. Puedes utilizar una cuenta dedicada y reenviar allí únicamente las notificaciones que quieras procesar.
¿Puedo eliminar una categoría?
Sí. También puedes simplemente colocarla como inactiva utilizando NO en la columna correspondiente.
¿Puedo ver cuánto presupuesto me queda desde Telegram?
Sí. Utiliza el comando /status para consultar los presupuestos disponibles.
Conclusión
Con este proyecto puedes convertir las notificaciones que ya recibes en Gmail en un sistema sencillo de control de gastos automático.
Gmail detecta la notificación, Google Apps Script procesa el movimiento, Google Sheets conserva la información y Telegram te permite clasificar el gasto desde el celular.
Lo más interesante es que la estructura queda abierta para que puedas modificar presupuestos, categorías y fuentes sin tener que reconstruir el proyecto cada vez.
Si tienes alguna duda o quieres proponer una mejora para esta automatización, puedes dejarla en los comentarios del tutorial.
🎥 ¿Prefieres verlo paso a paso?
Mira el tutorial completo y configura el sistema conmigo desde cero.












