{
  "name": "Petición de reseñas de Google (plantilla de Cauce)",
  "nodes": [
    {
      "parameters": {
        "content": "## Petición de reseñas de Google\nCada día busca en tu hoja los trabajos terminados y manda **un correo** a cada cliente con el enlace directo para dejar su reseña. Después apunta la fecha en «Reseña pedida» para no repetir.\n\n**Antes de activarla:**\n1. Crea una hoja de Google llamada **Trabajos** con estas columnas: Fecha de fin · Cliente · Email · Estado · Reseña pedida.\n2. En **Leer trabajos** y **Apuntar reseña pedida**, conecta tu cuenta de Google y pega la URL de la hoja.\n3. En **Preparar correos**, cambia el nombre del negocio, la firma y tu enlace de reseñas (en tu Perfil de Empresa de Google: Pedir reseñas).\n4. En **Enviar correo**, conecta tu correo (SMTP) y el remitente.\n\nPide la reseña a **todos** los clientes, sin regalos a cambio y sin filtrar a los contentos: lo prohíben las políticas de Google.\n\nPlantilla gratuita de Cauce · cauceautomation.es/automatizacion-de-procesos/plantillas-n8n",
        "height": 460,
        "width": 560,
        "color": 4
      },
      "id": "afd901a5-edf2-5458-abad-bb082bd6767e",
      "name": "Cómo usar esta plantilla",
      "type": "n8n-nodes-base.stickyNote",
      "typeVersion": 1,
      "position": [
        -80,
        -420
      ]
    },
    {
      "parameters": {
        "rule": {
          "interval": [
            {
              "triggerAtHour": 18
            }
          ]
        }
      },
      "id": "2cdd2ded-d093-5bda-a2b7-2bcbfb21ade9",
      "name": "Cada día a las 18:00",
      "type": "n8n-nodes-base.scheduleTrigger",
      "typeVersion": 1.2,
      "position": [
        0,
        100
      ]
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Trabajos",
          "mode": "name"
        },
        "options": {}
      },
      "id": "cd64ef3f-a595-5c63-830e-81748a68db81",
      "name": "Leer trabajos",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        240,
        100
      ]
    },
    {
      "parameters": {
        "jsCode": "const DIA = 86400000;\nfunction fecha(v) {\n  if (v === null || v === undefined || v === '') return null;\n  if (typeof v === 'number') return Date.UTC(1899, 11, 30) + Math.floor(v) * DIA;\n  const s = String(v).trim();\n  let m = s.match(/^(\\d{1,2})[\\/.-](\\d{1,2})[\\/.-](\\d{2,4})/);\n  if (m) { let y = +m[3]; if (y < 100) y += 2000; return Date.UTC(y, +m[2] - 1, +m[1]); }\n  m = s.match(/^(\\d{4})-(\\d{1,2})-(\\d{1,2})/);\n  if (m) return Date.UTC(+m[1], +m[2] - 1, +m[3]);\n  return null;\n}\nconst HOY = Date.UTC($now.year, $now.month - 1, $now.day);\nconst ddmm = (t) => new Date(t).toISOString().slice(0, 10).split('-').reverse().join('/');\nconst esc = (s) => String(s ?? '').replace(/[&<>\"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]));\n\n// Cambia estos tres datos por los de tu negocio.\nconst NEGOCIO = 'Tu negocio';\nconst ENLACE_RESENA = 'https://g.page/r/TU-CODIGO/review';  // Perfil de empresa de Google > Pedir reseñas\nconst FIRMA = 'El equipo de Tu negocio';\n// Solo trabajos terminados en los últimos 30 días: así, al activarla, no escribe a clientes antiguos.\nconst MAX_DIAS = 30;\n\nconst salida = [];\nfor (const item of $input.all()) {\n  const r = item.json;\n  const fin = fecha(r['Fecha de fin']);\n  const email = String(r['Email'] ?? '').trim();\n  const estado = String(r['Estado'] ?? '').trim().toLowerCase();\n  if (estado !== 'terminado' || !fin || fin > HOY || HOY - fin > MAX_DIAS * DIA) continue;\n  if (String(r['Reseña pedida'] ?? '').trim() !== '') continue;\n  if (!/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$/.test(email)) continue;\n  const nombre = String(r['Cliente'] ?? '').trim().split(' ')[0];\n  salida.push({ json: {\n    row_number: r.row_number, email, hoy: ddmm(HOY),\n    asunto: `¿Qué tal con ${NEGOCIO}?`,\n    html: `<p>Hola${nombre ? ' ' + esc(nombre) : ''}:</p><p>Gracias por confiar en ${esc(NEGOCIO)}. Si tienes un minuto, nos ayuda mucho que cuentes en Google qué tal fue:</p>`\n      + `<p><a href=\"${ENLACE_RESENA}\">Dejar mi opinión en Google</a></p><p>Y si algo no salió como esperabas, responde a este correo y lo hablamos.</p><p>${esc(FIRMA)}</p>`,\n  } });\n}\nreturn salida;"
      },
      "id": "1b29e8a7-19f0-5c29-adb5-ca898744fbf8",
      "name": "Preparar correos",
      "type": "n8n-nodes-base.code",
      "typeVersion": 2,
      "position": [
        480,
        100
      ]
    },
    {
      "parameters": {
        "fromEmail": "",
        "toEmail": "={{ $json.email }}",
        "subject": "={{ $json.asunto }}",
        "emailFormat": "html",
        "html": "={{ $json.html }}",
        "options": {}
      },
      "id": "0eadfbd6-9551-5b60-8dd4-fc6c632f095f",
      "name": "Enviar correo",
      "type": "n8n-nodes-base.emailSend",
      "typeVersion": 2.1,
      "position": [
        720,
        100
      ]
    },
    {
      "parameters": {
        "documentId": {
          "__rl": true,
          "value": "",
          "mode": "url"
        },
        "sheetName": {
          "__rl": true,
          "value": "Trabajos",
          "mode": "name"
        },
        "operation": "update",
        "columns": {
          "mappingMode": "defineBelow",
          "value": {
            "row_number": "={{ $('Preparar correos').item.json.row_number }}",
            "Reseña pedida": "={{ $('Preparar correos').item.json.hoy }}"
          },
          "matchingColumns": [
            "row_number"
          ],
          "schema": [
            {
              "id": "row_number",
              "displayName": "row_number",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "number",
              "canBeUsedToMatch": true,
              "readOnly": true,
              "removed": false
            },
            {
              "id": "Reseña pedida",
              "displayName": "Reseña pedida",
              "required": false,
              "defaultMatch": false,
              "display": true,
              "type": "string",
              "canBeUsedToMatch": true,
              "removed": false
            }
          ]
        },
        "options": {}
      },
      "id": "babb0277-aefc-5e74-abb6-a0e2a6ef55b3",
      "name": "Apuntar reseña pedida",
      "type": "n8n-nodes-base.googleSheets",
      "typeVersion": 4.7,
      "position": [
        960,
        100
      ]
    }
  ],
  "connections": {
    "Cada día a las 18:00": {
      "main": [
        [
          {
            "node": "Leer trabajos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Leer trabajos": {
      "main": [
        [
          {
            "node": "Preparar correos",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Preparar correos": {
      "main": [
        [
          {
            "node": "Enviar correo",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Enviar correo": {
      "main": [
        [
          {
            "node": "Apuntar reseña pedida",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  },
  "active": false,
  "settings": {
    "executionOrder": "v1",
    "timezone": "Europe/Madrid"
  },
  "meta": {
    "templateCredsSetupCompleted": false,
    "source": "Plantilla gratuita de Cauce · cauceautomation.es/automatizacion-de-procesos/plantillas-n8n"
  },
  "tags": []
}
