Aprende a conectar Google Forms y Make.com con Webhooks como un profesional.
Dejaremos de lado el método básico para sumergirnos en la técnica que utilizan los profesionales. Conectar aplicaciones a través de Webhooks y Google Apps Script no solo es más robusto y fiable, sino que te da un control total sobre los datos y abre un universo de posibilidades para conectar casi cualquier servicio web.
Elimina problemas de sincronización. La información llega al instante.
Envía datos adicionales desde Google Sheets y ten control total.
Conecta casi cualquier aplicación web, sin límites.
Este es el flujo de datos que construiremos. Cada paso es una pieza clave en nuestra automatización. Haz clic en un paso para ir directamente a sus instrucciones en la guía.
Sigue estos pasos para configurar tu primera automatización profesional. Cada sección contiene las instrucciones exactas que necesitas.
Diseña un formulario de contacto simple. Para este ejemplo, asegúrate de incluir los siguientes campos: `Nombre Completo`, `Email de Contacto`, `Teléfono` y `¿En qué podemos ayudarte?`.
Dentro de tu Google Form, ve a la pestaña "Respuestas". Haz clic en el icono verde de Google Sheets y selecciona "Crear una hoja de cálculo". Esto es fundamental, ya que nuestro script leerá los datos directamente desde esta hoja vinculada.
Este es el núcleo de la automatización. Le daremos superpoderes a nuestro formulario para que envíe los datos activamente a nuestro webhook.
function enviarFormularioYDatosDeHojaAlWebhook(e) {
const WEBHOOK_URL = "PEGA-AQUI-TU-WEBHOOK";
Logger.log("INICIO: enviarFormularioYDatosDeHojaAlWebhook");
if (!WEBHOOK_URL || WEBHOOK_URL.trim() === "" || WEBHOOK_URL.includes("PEGA-AQUI")) {
Logger.log("ERROR CRÍTICO: La URL del Webhook no ha sido configurada.");
return;
}
let payloadFinal = {};
let respuestasDelFormulario = {};
let datosDeLaHoja = {};
let sheetRowId = "No procesado";
let emailEncuestado = "No recopilado";
let timestampEnvio = new Date().toISOString();
try {
if (!e) {
Logger.log("ERROR: Objeto de evento 'e' no disponible.");
return;
}
const formResponse = e.response;
emailEncuestado = formResponse.getRespondentEmail() || "Email no recopilado";
timestampEnvio = formResponse.getTimestamp().toISOString();
const itemResponses = formResponse.getItemResponses();
itemResponses.forEach(itemResp => {
const tituloPregunta = itemResp.getItem().getTitle();
let respuesta = itemResp.getResponse();
if (Array.isArray(respuesta)) {
respuesta = respuesta.join(', ');
}
respuestasDelFormulario[tituloPregunta] = respuesta;
});
const form = e.source;
const spreadsheetId = form.getDestinationId();
if (spreadsheetId) {
const spreadsheet = SpreadsheetApp.openById(spreadsheetId);
const responseSheet = spreadsheet.getSheets()[0];
sheetRowId = responseSheet.getLastRow();
if (sheetRowId > 1) {
const headers = responseSheet.getRange(1, 1, 1, responseSheet.getLastColumn()).getValues()[0];
const rowData = responseSheet.getRange(sheetRowId, 1, 1, responseSheet.getLastColumn()).getValues()[0];
headers.forEach((header, i) => {
datosDeLaHoja[header.trim()] = rowData[i];
});
}
} else {
sheetRowId = "Formulario no vinculado a una hoja.";
}
payloadFinal = {
origen: "Webhook desde Google Form Script",
tituloFormulario: form.getTitle(),
idRespuesta: formResponse.getId(),
timestamp: timestampEnvio,
emailRecopilado: emailEncuestado,
respuestasFormulario: respuestasDelFormulario,
numeroFilaSheet: sheetRowId,
datosFilaSheet: datosDeLaHoja
};
} catch (error) {
Logger.log("ERROR durante el procesamiento: " + error.toString());
payloadFinal = { error: "Ocurrió un error en el script", detalles: error.toString() };
}
const options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(payloadFinal),
muteHttpExceptions: true
};
try {
const httpResponse = UrlFetchApp.fetch(WEBHOOK_URL, options);
Logger.log(`Webhook contactado. Código: ${httpResponse.getResponseCode()}`);
} catch (fetchError) {
Logger.log("ERROR CRÍTICO al enviar al webhook: " + fetchError.toString());
}
Logger.log("FIN de la ejecución.");
}
Este es el paso que le dice a tu script cuándo ejecutarse. ¡Mucha atención!
Ahora que los datos llegan a Make.com, el cielo es el límite. Puedes añadir módulos para:
Si algo no funciona, respira. El 99% de los errores se resuelven revisando estos puntos.
Significa que el script no tiene permiso para ejecutarse. La solución es eliminar el activador, crearlo de nuevo y completar cuidadosamente el proceso de autorización del Paso 5, aceptando todos los permisos.
Ahora que dominas la base, elige uno de estos retos para construir y explorar. ¡Lo revisaremos en la próxima sesión!
Añade un módulo de OpenAI a tu escenario. Pídele a ChatGPT que redacte un correo de bienvenida amable y profesional basado en la consulta del cliente.
Usa AI Studio (aistudio.google.com) para crear un prompt que genere una publicación de LinkedIn sobre el servicio consultado por el cliente.
Crea un escenario que se ejecute cada lunes, pida a OpenAI 5 ideas de artículos de blog sobre tu negocio y las guarde en una hoja de Google Sheets.