Primero:
El sistema se basa en la creación de un Google Form con una única opción de respuesta ("¡Me gusta!"). Lo ingenioso del método es que el código HTML no muestra el formulario completo, sino que utiliza un "recorte visual" (un iframe posicionado estratégicamente) para mostrar únicamente el botón de envío. De este modo, el usuario cree que está pulsando un botón de Like diseñado a medida, cuando en realidad está enviando una respuesta a tu formulario de Google de forma transparente.
Segundo:
Los votos se almacenan en una hoja de cálculo de Google Sheets vinculada al formulario. En esta hoja, se utiliza una fórmula en la celda D1 que cuenta automáticamente cuántas veces aparece la respuesta seleccionada. El punto crucial para que el contador sea rápido es publicar esta hoja no como página web, sino como archivo CSV. Este formato de datos puros es mucho más ligero y se actualiza en los servidores de Google casi al instante, eliminando el retraso habitual de cinco minutos de las publicaciones estándar.
Finalmente:
El widget HTML/JS en tu sitio web actúa como el motor visual. El script realiza una petición silenciosa al archivo CSV cada 10 segundos (o inmediatamente después de un clic) para extraer el valor de la celda D1. Al recibir solo texto plano, el widget muestra el número de likes con un diseño limpio, sin barras de scroll y perfectamente centrado, utilizando además un sistema de "caché-bust" (añadiendo la hora a la URL) para obligar al navegador a mostrar siempre el dato más reciente disponible.
El "botón" es en realidad un sistema de envío directo a Google Forms. Para que funcione sin que el usuario vea el formulario ni tenga que registrarse, sigue estos pasos:
Crea el formulario: Ve a Google Forms y crea uno nuevo.
Configura la pregunta: Añade una única pregunta de Opción múltiple.
Pregunta: "¿Te gusta?"
Opción 1: Escribe exactamente: ¡Me gusta! 👍
Ajuste de Privacidad (Vital): Ve a la pestaña Configuración y asegúrate de que:
Respuestas > Limitar a 1 respuesta: Esté DESACTIVADO. (Si se activa, el botón fallará en modo incógnito porque obligará a iniciar sesión).
Si usas una cuenta de empresa, desactiva también la restricción de usuarios de tu organización.
Vincula la Hoja de Cálculo: En la pestaña Respuestas, haz clic en el icono verde para crear la hoja de Google Sheets donde se sumarán los votos.
Obtén los datos para el código:
La URL de envío: Copia la URL de tu formulario, pero cambia el final. Si termina en /viewform, cámbialo por /formResponse. Esta es la dirección que recibe los datos sin abrir la web de Google.
El ID de la respuesta: Haz clic derecho en tu formulario abierto y selecciona "Ver código fuente". Busca (Ctrl+F) la palabra entry. seguida de un número (ej. entry.921299748). Ese es el ID que debes poner en el código para que el voto se registre correctamente.
💡 Nota técnica: "Hemos actualizado el código para usar un sistema de Envío Directo (POST). A diferencia de los iframes recortados tradicionales, este método es 'a prueba de balas': funciona en modo incógnito, no se desplaza visualmente y no abre ventanas emergentes de Google, manteniendo al usuario siempre en tu página.
Aquí es donde ocurre la magia: la hoja recibirá los votos y el código leerá el resultado para mostrarlo en tu web.
Prepara el Contador: En la hoja de cálculo de Google que creaste en el paso anterior, sitúate en la Celda D1.
Introduce la Fórmula: Copia y pega esta fórmula. Se encargará de contar cuántas veces aparece el texto de "Like" en la columna de respuestas:
=CONTAR.SI(B:B; "¡Me gusta! 👍") & " Likes"
Nota: Si en tu formulario escribiste solo "Like", aquí debe decir "Like". El texto debe ser idéntico.
Publicar como CSV (Paso Crítico): Para que el widget pueda "leer" el número sin entrar a tu cuenta de Google, debemos hacer la hoja pública en formato de datos:
Ve a Archivo > Compartir > Publicar en la web.
En el primer desplegable selecciona "Respuestas de formulario 1" (o el nombre de tu pestaña).
En el segundo desplegable, cambia "Página web" por Valores separados por comas (.csv).
Pulsa Publicar y copia la URL generada.
Ahora uniremos todo. Este código crea el botón azul con el contador inteligente que se actualiza solo.
En tu Google Site, selecciona Insertar > Insertar código.
Copia y pega el código que aparece a continuación.
IMPORTANTE: Busca las dos partes marcadas en el código y sustitúyelas:
Sustituye URL_DE_RESPUESTA_DE_GOOGLE por tu enlace del Paso 1 (el que termina en /formResponse).
Sustituye entry.TU_ID_AQUI por el número de tu pregunta (lo obtuviste en el Paso 1).
Sustituye TU_URL_DEL_CSV_AQUÍ por el enlace del Paso 2.
(Aquí iría el bloque de código completo que configuramos antes)
-------------------------------------------------------- >>>>>>>
Envío Silencioso (Background Submit): A diferencia de un recorte de ventana, ahora usamos un formulario real que envía el voto directamente al servidor de Google. Gracias al atributo target, el envío se procesa de forma invisible en un "túnel" oculto (iframe invisible), evitando que la página se recargue o que se abran ventanas externas.
Formato CSV: Google Sheets publica páginas web con un retraso de varios minutos. Sin embargo, los archivos CSV son mucho más ligeros y se actualizan casi al instante. El script "lee" ese archivo de texto y extrae únicamente el dato de la celda donde sumas los likes.
Anti-Caché: Añadimos &t=... (la marca de tiempo exacta) al final de la URL del CSV. Esto engaña al servidor de Google y al navegador, obligándolos a descargar el archivo nuevo en cada revisión en lugar de mostrar una versión vieja guardada en la memoria.
Filtro de Seguridad: El código incluye una regla de "Solo subida". Si por un error de sincronización de Google el servidor devuelve un número menor al que ya se muestra en pantalla, el script lo ignora. Así, el contador siempre parece estable y profesional.
Persistencia (Memoria Local): Usamos localStorage para guardar una "marca" en el navegador del usuario. Si este refresca la página o vuelve otro día, el sistema detecta esa marca y muestra directamente el mensaje de "Gracias", evitando que vote dos veces desde el mismo dispositivo.