> Plantilla de partida de fernandorivera.es. Úsala y adáptala libremente; sin garantía; revisa los datos que tratas.

# Checklist de apertura y cierre en Make: avisos y resumen semanal

Guía paso a paso para montar en Make lo mismo que la plantilla de n8n `n8n-checklist-apertura.json`. Son tres escenarios pequeños:

1. **Aviso inmediato**: si una respuesta llega con alguna tarea en «No» o con incidencia, aviso al móvil del encargado.
2. **Aviso de que falta**: a la hora límite, comprueba qué tiendas no han enviado la checklist.
3. **Resumen del lunes**: una IA agrupa las incidencias de la semana.

Explicación completa en el artículo «Monta tu app: checklist de apertura y cierre en el móvil» de fernandorivera.es.

> Es una plantilla de partida, no probada en tu cuenta. Pruébala con respuestas de prueba antes de usarla. Los nombres de los módulos de Make pueden cambiar un poco con las versiones: si no encuentras uno exacto, busca el más parecido dentro de la misma app.

## La hoja de respuestas

Es la que crea Google Forms al vincular el formulario (o la tabla de AppSheet o Glide). Columnas esperadas:

| Marca temporal | Tienda | Tipo | Persona | Tarea 1 | Tarea 2 | … | Incidencia | Foto |
|---|---|---|---|---|---|---|---|---|

- **Tipo**: Apertura o Cierre.
- Cada tarea es una pregunta de opción múltiple obligatoria con **Sí** y **No**.
- Añade una columna más a la derecha, **Fecha**, con esta fórmula en la fila 2 (en una hoja en español):
  `=ARRAYFORMULA(SI(A2:A=""; ""; TEXTO(A2:A; "yyyy-mm-dd")))`
  Así los escenarios buscan por fecha sin pelearse con el formato de la marca temporal. Si la columna sale con un formato raro, revisa la configuración regional de la hoja (Archivo › Configuración).

## Avisos al móvil: Telegram, correo o WhatsApp

- **Telegram** es lo más sencillo: crea un bot con @BotFather, conéctalo en Make con su token y averigua el *chat ID* del encargado o del grupo de encargados.
- **Correo**: cambia el módulo de Telegram por Gmail › Send an email.
- **WhatsApp**: necesitas WhatsApp Business Platform (Cloud API) de Meta, un número dado de alta y plantillas de mensaje aprobadas. Es más trabajo; empieza por Telegram o correo y cámbialo cuando funcione.

## Escenario 1 · Aviso inmediato

### Módulo 1 · Google Sheets › Watch New Rows
Pestaña de respuestas, con cabeceras.

### Filtro
Condición con **OR** entre estas líneas (una por tarea, más la incidencia):

- `Tarea 1` · Text operators › Equal to · `No`
- `Tarea 2` · Equal to · `No`
- …
- `Incidencia` · Basic operators › Exists

### Módulo 2 · Telegram Bot › Send a Text Message or a Reply
- Chat ID: el del encargado o el grupo.
- Text:
```
⚠️ {{1.Tipo}} · {{1.Tienda}} ({{1.Marca temporal}})
Sin hacer: {{if(1.Tarea 1 = "No"; "Tarea 1 "; "")}}{{if(1.Tarea 2 = "No"; "Tarea 2 "; "")}}
Incidencia: {{1.Incidencia}}
Foto: {{1.Foto}}
```
Cambia «Tarea 1» por el nombre real de cada tarea.

## Escenario 2 · Aviso de que falta

Primero, en la hoja, una pestaña **Control** que cuente las respuestas de hoy por tienda. Así la comprobación la hace una fórmula y Make solo lee el resultado.

| Tienda | Apertura hoy | Cierre hoy |
|---|---|---|
| Tienda Centro | (fórmula) | (fórmula) |
| Tienda Norte | (fórmula) | (fórmula) |

Fórmula de **Apertura hoy** en B2 (hoja en español; ajusta las letras: B es la columna Tienda de las respuestas, C la columna Tipo y K la columna Fecha que has añadido):

`=CONTAR.SI.CONJUNTO('Respuestas de formulario 1'!B:B; A2; 'Respuestas de formulario 1'!C:C; "Apertura"; 'Respuestas de formulario 1'!K:K; TEXTO(HOY(); "yyyy-mm-dd"))`

En **Cierre hoy**, la misma con `"Cierre"`. Copia hacia abajo una fila por tienda.

Después, duplica el escenario: uno para la apertura y otro para el cierre.

### Programación
Cada día a la hora límite (por ejemplo, 15 minutos después de abrir).

### Módulo 1 · Google Sheets › Search Rows
- Pestaña **Control**.
- Filtro: `Apertura hoy` igual a `0` (en el escenario de cierre, `Cierre hoy`).

### Módulo 2 · Tools › Text aggregator
- Text: `{{1.Tienda}}`
- Row separator: Other › `, `

### Filtro y Módulo 3 · Telegram Bot › Send a Text Message or a Reply
- Filtro antes del módulo 2: el módulo 1 ha devuelto al menos una fila (`Total number of bundles` mayor que 0). Si todas las tiendas han enviado, no llega nada.
- Text: `⏰ Apertura sin registrar a las {{formatDate(now; "HH:mm")}}: {{2.text}}`

## Escenario 3 · Resumen del lunes con IA

### Programación
Cada lunes a las 8:00.

### Módulo 1 · Google Sheets › Search Rows
Filtro: `Incidencia` no vacía.

Después, en la línea que sale del módulo 1, un filtro para quedarte con la última semana: `{{parseDate(1.Fecha; "YYYY-MM-DD")}}` · Datetime operators › Later than or equal to · `{{addDays(now; -7)}}`.

### Módulo 2 · Tools › Text aggregator
- Text: `- {{1.Tienda}} · {{1.Fecha}} · {{1.Tipo}}: {{1.Incidencia}}`
- Row separator: New row.

Solo tienda, fecha, tipo e incidencia. Ni el nombre de quien rellena ni las fotos.

### Módulo 3 · OpenAI (o la app de tu IA) › crear una respuesta de chat
Si no encuentras el módulo, usa HTTP › Make a request como en la guía de tickets. Instrucción:

```
Te paso las incidencias de apertura y cierre de la última semana, una por línea, con tienda, fecha, tipo e incidencia. Agrúpalas por tema (mantenimiento, mercancía, sistemas, seguridad, limpieza, otros). Di cuáles se repiten y en qué tiendas, y cuáles parecen seguir sin resolver. Termina con tres acciones concretas para esta semana. Máximo 15 líneas, en español de España. No inventes causas ni datos que no estén en el texto y no menciones a personas.

[texto del módulo 2]
```

### Módulo 4 · Gmail › Send an email
Asunto: `Incidencias de apertura y cierre · semana al {{formatDate(now; "DD/MM")}}`. Cuerpo: la respuesta de la IA y, debajo, el texto del módulo 2 para poder comprobarla.

## Pruébalo

1. Envía desde el móvil una apertura con todo en «Sí» (no debe llegar nada) y otra con una tarea en «No» (debe llegar el aviso).
2. Cambia la hora del escenario 2 a dentro de cinco minutos sin haber enviado la checklist de una tienda: debe llegar el aviso con su nombre.
3. Escribe tres incidencias de prueba y lanza el escenario 3 con **Run once**.

## Datos

En el campo de incidencias, hechos y tareas: nada de nombres de clientes ni comentarios sobre compañeros. Las fotos se quedan en Drive y no van a la IA.
