Public
Cron que lee horarios de Google Sheets y notifica por email
Val Town is a collaborative website to build and scale JavaScript apps.
Deploy APIs, crons, & store data – all from the browser, and deployed in milliseconds.

📅 Office Schedule Notifier

Cron que cada domingo a las 7:00 PM (hora Colombia) lee una hoja de Google Sheets con el horario de asistencia a la oficina y envía un correo a cada persona indicándole qué días debe ir.

Cómo funciona

Rendering mermaid diagram...
  1. El cron se activa los domingos a las 7pm hora Colombia
  2. Se conecta a Google Sheets usando una cuenta de servicio
  3. Encuentra la hoja que no se llama "Instrucciones" (la del horario semanal)
  4. Lee las columnas B:H (Lunes a Domingo) y recopila qué nombres aparecen en cada día
  5. Cruza cada nombre con la tabla de contactos en contacts.ts
  6. Envía un correo personalizado a cada persona con sus días asignados

Estructura de la hoja de Google Sheets

B (Lun)C (Mar)D (Mié)E (Jue)F (Vie)G (Sáb)H (Dom)
Fila 1LunesMartesMiércolesJuevesViernesSábadoDomingo
Fila 2JuanMaríaJuanAna
Fila 3AnaPedroPedro
........................

Variables de entorno requeridas

VariableDescripción
GOOGLE_SERVICE_ACCOUNTJSON completo de la cuenta de servicio de Google Cloud
GOOGLE_SHEET_IDID del spreadsheet (de la URL entre /d/ y /edit)
SMTP_HOSTHost del servidor SMTP (ej: smtp.gmail.com)
SMTP_PORTPuerto SMTP (ej: 587)
SMTP_USERUsuario SMTP
SMTP_PASSContraseña o App Password
SMTP_FROMDirección "from" del correo

Configurar contactos

Edita contacts.ts y agrega los contactos:

export const CONTACTS: Contact[] = [ { name: "Juan Pérez", email: "juan.perez@empresa.com" }, { name: "María García", email: "maria.garcia@empresa.com" }, { name: "Ana López", email: "ana.lopez@empresa.com" }, ];

⚠️ Los nombres deben coincidir exactamente con los que aparecen en la hoja de Google Sheets (la comparación ignora mayúsculas/minúsculas y espacios extra).

Archivos

  • cron.ts — Punto de entrada del cron (interval)
  • sheets.ts — Servicio de lectura de Google Sheets
  • mailer.ts — Servicio de envío de correos SMTP
  • contacts.ts — Tabla de contactos (nombres → emails)