# Prompt 3 — La hoja de Google como servidor del grupo

Requiere la página del prompt 2 funcionando en tu aparato.

---

Ahora conecta mi divisor de gastos a una hoja de Google para que todo el
grupo vea lo mismo. Dos piezas:

**Pieza 1 — el Apps Script.** Escribe un `Codigo.gs` para pegar en el editor
de Apps Script de una hoja de cálculo:

- La hoja "eventos" guarda una fila por evento: fecha, tipo, y el evento como
  JSON en una celda. Solo se agregan filas (append), nunca se editan.
- `doGet` con `?accion=eventos` devuelve toda la bitácora como JSON.
- `doPost` con el evento en el cuerpo agrega una fila. Usa LockService para
  que dos teléfonos agregando a la vez no se pisen.
- Una clave secreta en las propiedades del script (propiedad CLAVE); toda
  petición debe traerla en `?clave=` o se rechaza.
- Límite de tamaño por evento (4000 caracteres) para que nadie infle la hoja.
- Incluye en comentarios las instrucciones de publicación: implementar como
  aplicación web, ejecutar como yo, acceso "cualquier usuario", y la
  advertencia de que Google mostrará la pantalla de "aplicación no
  verificada" (es normal: la app es mía).

**Pieza 2 — el adaptador en la página.** Sin tocar el motor ni la interfaz,
reemplaza el guardado localStorage por uno que hable con ese script cuando la
URL trae `?script=<url>&clave=<clave>` (y se quede en localStorage si no):

- OJO con Apps Script: el POST debe ir con cuerpo de texto plano (no
  application/json) y `redirect: 'follow'`, o el navegador lo bloquea por CORS.
- COLA OFFLINE: si no hay internet, el evento se guarda en una cola en
  localStorage y la vista lo muestra ya (con un indicador "N por subir"). Al
  volver la señal, la cola se sube en orden. Como todo es append, subir tarde
  no pisa a nadie.
- Al cargar: lo del servidor + lo que siga en cola, sin duplicar (deduplica
  por tipo+id+fecha). Si el servidor no contesta, la última copia buena en
  caché + la cola: la página abre siempre, con señal o sin ella.
- El indicador dice la verdad en todo momento: "al día", "N por subir",
  "sin internet".

Para probarlo sin desplegar a cada rato, hazme también un servidor local en
Python que imite el contrato del script (GET eventos / POST agregar, misma
clave) y sirva la página.
