Este proyecto contiene un script de Google Apps Script que crea un bot de Telegram interactivo. El bot guía al usuario a través de un formulario de 10 pasos y guarda las respuestas automáticamente en una Google Sheet en tiempo real.
Es ideal para registrar actividades, reportes de ventas, tickets de soporte o tareas diarias directamente desde el móvil sin abrir la hoja de cálculo.
- Registro Conversacional: Interfaz paso a paso (Wizard) dentro de Telegram.
- Validación de Datos: Verifica fechas (DD/MM/YYYY) y campos vacíos.
- Teclados Interactivos: Usa botones de selección rápida para opciones predefinidas.
- Control de Acceso: Lista blanca (
ALLOWED_USERS) para restringir quién puede usar el bot. - Integración Directa: No requiere servidores externos, corre 100% en Google Apps Script.
- Persistencia de Estado: Guarda el progreso del formulario si la conversación se interrumpe.
- Una cuenta de Google (para acceder a Sheets y Apps Script).
- Una cuenta de Telegram.
- Un bot creado con @BotFather (necesitarás el API Token).
Para que el bot guarde la información correctamente, debes preparar la hoja de cálculo con los encabezados exactos:
- Crea una nueva hoja de cálculo en Google Sheets.
- Copia el ID de la hoja (es la parte larga de la URL, entre
/d/y/edit). Este ID lo usarás en la constanteID_SHEET. - Renombra la pestaña inferior a
Actividades(o el nombre que elijas, pero debe coincidir con la constanteSHEET_NAME). - Crea los encabezados en la primera fila (Fila 1) en este orden exacto. Solo se requieren 7 columnas:
| Columna | Celda | Encabezado | Notas |
|---|---|---|---|
| 1 | A1 | Fecha Creación | Se genera automáticamente. |
| 2 | B1 | Cliente | Pregunta del formulario. |
| 3 | C1 | Asunto | Pregunta del formulario. |
| 4 | D1 | Prioridad | Pregunta del formulario. |
| 5 | E1 | Descripción | Pregunta del formulario. |
| 6 | F1 | Estado | Pregunta del formulario. |
| 7 | G1 | Fuente | Se genera automáticamente. |
⚠️ Importante: El orden de las columnas es crucial. Si cambias la secuencia o el número de columnas, el bot guardará los datos de forma incorrecta.
- En tu Google Sheet, ve a Extensiones > Apps Script.
- Borra cualquier código que aparezca y pega el contenido del archivo
Code.gs(o el código proporcionado en este repo). - Edita la sección de CONFIGURACIÓN al inicio del código con tus datos:
// ======================================================================
// CONFIGURACIÓN
// ======================================================================
const TOKEN = '123456789:ABCdefGHIjklMNOpqRSTuvwXYZ'; // Tu Token de BotFather
const ID_SHEET = '1xY2z3_ID_DE_TU_HOJA_DE_CALCULO_AQUI'; // El ID largo de la URL de tu Sheet
const SHEET_NAME = 'Actividades'; // El nombre exacto de la pestaña
const ALLOWED_USERS = ['12345678', '87654321']; // Tu ID de Telegram (usa IDBot para saber cuál es)
const WEB_APP_URL = 'https://script.google.com/macros/s/TU_URL_LARGA_AQUI/exec';- Haz clic en el botón azul Implementar (Deploy) > Nueva implementación.
- En "Seleccionar tipo", elige Aplicación web.
- Configura lo siguiente:
- Descripción:
Bot Telegram v1 - Ejecutar como:
Yo(tu email). - Quién tiene acceso:
Cualquier persona(Esto es necesario para que Telegram pueda enviar datos al script, pero la seguridad la manejamos conALLOWED_USERSdentro del código).
- Descripción:
- Haz clic en Implementar.
- Copia la URL de la aplicación web generada (termina en
/exec). - Pega esa URL en la variable
WEB_APP_URLdentro de tu código:
const WEB_APP_URL = '[https://script.google.com/macros/s/TU_URL_LARGA_AQUI/exec](https://script.google.com/macros/s/TU_URL_LARGA_AQUI/exec)';- Guarda el código (
Ctrl + S). - Dentro del editor de Apps Script, selecciona la función
setWebhooken la barra de herramientas superior. - Haz clic en Ejecutar.
- Acepta los permisos que solicita Google.
- Si ves un log que dice
{"ok":true, "result":true...}, ¡tu bot está listo!
- Abre tu bot en Telegram.
- Envía el comando
/registroo/start. - El bot te hará 10 preguntas. Responde escribiendo o usando los botones.
- Al finalizar, recibirás una confirmación y los datos aparecerán automáticamente en tu Google Sheet.
Puedes editar la constante FIELDS en el código para cambiar las preguntas, las opciones de los menús desplegables o las validaciones.
{
key: 'status',
type: 'select',
question: 'Paso 6/7: ¿Cuál es el **Estado** actual del registro?',
options: ['Pendiente', 'En Progreso', 'Bloqueado', 'Completado'] // ✏️ Edita los elementos de esta lista
},Este proyecto es de código abierto. Siéntete libre de usarlo y modificarlo para tus necesidades personales o empresariales." Richard-Dev 2025