# Conexion A Google Sheets

## Objetivo

Conectar el formulario de diagnostico de Mateolab a una hoja real sin cambiar la experiencia visible del sitio.

## Recomendacion

Usar Google Sheets como primer CRM real porque es rapido, barato y suficiente para el primer cliente.

## Columnas Sugeridas

Crear una hoja llamada `Leads` con estas columnas:

- Fecha
- Negocio
- Contacto
- Web o redes
- WhatsApp o correo
- Objetivo
- Problema
- Etapa
- Fuente

## Apps Script

Crear un proyecto de Apps Script conectado a la hoja y usar este codigo:

```javascript
const SHEET_NAME = "Leads";

function doPost(event) {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME);
  const data = JSON.parse(event.postData.contents);

  sheet.appendRow([
    new Date(),
    data["business-name"] || "",
    data["contact-name"] || "",
    data.link || "",
    data["contact-method"] || "",
    data.goal || "",
    data.problem || "",
    data.stage || "Nuevo lead",
    data.source || "Website",
  ]);

  return ContentService
    .createTextOutput(JSON.stringify({ ok: true }))
    .setMimeType(ContentService.MimeType.JSON);
}
```

## Publicacion Del Endpoint

1. Deploy as web app.
2. Execute as: Me.
3. Who has access: Anyone.
4. Copy the web app URL.
5. Put the URL in `config.js` as `crmEndpoint`.

Ejemplo:

```javascript
window.MATEOLAB_CONFIG = {
  crmEndpoint: "https://script.google.com/macros/s/TU_ENDPOINT/exec",
  whatsappNumber: "10000000000",
};
```

## Como Funciona En La Web

- Si `crmEndpoint` esta vacio, el formulario guarda solo en el CRM local del navegador.
- Si `crmEndpoint` tiene URL, el formulario guarda localmente y tambien envia el lead a Google Sheets como JSON en `text/plain`.
- Si `whatsappNumber` esta vacio, WhatsApp abre solo con el mensaje preparado.
- Si `whatsappNumber` tiene numero, WhatsApp abre directo hacia ese numero.

## Antes De Publicar

- Probar un envio real.
- Confirmar que aparece en Google Sheets.
- Confirmar que el CSV local sigue funcionando.
- Confirmar que no hay datos sensibles en `config.js`.
