var CALENDAR_ID = "f3c1909d6ab042be8a70e5af877c9aa948ef9cc185f7335887c98cad6a903a8f@group.calendar.google.com"; function getColorComercial(comercial) { var nombre = comercial.toString().trim().toUpperCase(); if (nombre === "DIEGO") return "11"; if (nombre === "LUCIA") return "7"; if (nombre === "YAHYA") return "10"; if (nombre === "PAUL") return "5"; if (nombre === "RUBEN") return "6"; if (nombre === "IZAN") return "9"; return "1"; } function doGet(e) { try { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var p = e.parameter; sheet.appendRow([ p.fecha, p.perfil, p.nombre, p.apellidos, p.telefono, p.email, p.instituto, p.poblacion, p.provincia, p.destino, p.mes, p.personas, p.horario, p.contacto, "", "", "", "", "", "" ]); return ContentService .createTextOutput(JSON.stringify({ result: "success" })) .setMimeType(ContentService.MimeType.JSON); } catch (err) { return ContentService .createTextOutput(JSON.stringify({ result: "error", message: err.toString() })) .setMimeType(ContentService.MimeType.JSON); } } function doPost(e) { try { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); var data = JSON.parse(e.postData.contents); sheet.appendRow([ data.fecha, data.perfil, data.nombre, data.apellidos, data.telefono, data.email, data.instituto, data.poblacion, data.provincia, data.destino, data.mes, data.personas, data.horario, data.contacto, "", "", "", "", "", "" ]); return ContentService .createTextOutput(JSON.stringify({ result: "success" })) .setMimeType(ContentService.MimeType.JSON); } catch (err) { return ContentService .createTextOutput(JSON.stringify({ result: "error", message: err.toString() })) .setMimeType(ContentService.MimeType.JSON); } } function onEditTrigger(e) { var sheet = e.source.getActiveSheet(); var range = e.range; var col = range.getColumn(); var row = range.getRow(); if (row <= 1) return; var citaAgendada = sheet.getRange(row, 18).getDisplayValue().toString().trim().toUpperCase(); var eventoId = sheet.getRange(row, 21).getValue().toString().trim(); if (col === 18 || col === 19 || col === 20) { if (citaAgendada === "SI") { var fechaCita = sheet.getRange(row, 19).getValue(); if (fechaCita) { if (eventoId) { borrarEventoPorId(eventoId); sheet.getRange(row, 21).setValue(""); } crearEvento(sheet, row, fechaCita); } } else { if (eventoId) { borrarEventoPorId(eventoId); sheet.getRange(row, 21).setValue(""); } } } } function borrarEventoPorId(eventoId) { try { var calendar = CalendarApp.getCalendarById(CALENDAR_ID); var evento = calendar.getEventById(eventoId); if (evento) { evento.deleteEvent(); Logger.log("Evento borrado: " + eventoId); } } catch (err) { Logger.log("Error al borrar evento: " + err.toString()); } } function construirFecha(fechaCita, horaReunion) { var fecha = new Date(fechaCita); fecha.setHours(9, 0, 0, 0); if (horaReunion && horaReunion.indexOf(":") > -1) { var partes = horaReunion.split(":"); fecha.setHours(parseInt(partes[0]), parseInt(partes[1]), 0, 0); } return fecha; } function crearEvento(sheet, row, fechaCita) { try { var nombre = sheet.getRange(row, 3).getValue(); var apellidos = sheet.getRange(row, 4).getValue(); var instituto = sheet.getRange(row, 7).getValue(); var telefono = sheet.getRange(row, 5).getValue(); var email = sheet.getRange(row, 6).getValue(); var destino = sheet.getRange(row, 10).getValue(); var comercial = sheet.getRange(row, 17).getValue(); var zonaComercial = sheet.getRange(row, 16).getValue(); var horaReunion = sheet.getRange(row, 20).getDisplayValue(); var fecha = construirFecha(fechaCita, horaReunion); var fechaFin = new Date(fecha.getTime() + 60 * 60 * 1000); var titulo = "Cita: " + instituto + " - " + nombre + " " + apellidos; var descripcion = "Instituto: " + instituto + "\n" + "Contacto: " + nombre + " " + apellidos + "\n" + "Telefono: " + telefono + "\n" + "Email: " + email + "\n" + "Destino: " + destino + "\n" + "Comercial: " + comercial + "\n" + "Zona: " + zonaComercial; var calendar = CalendarApp.getCalendarById(CALENDAR_ID); var evento = calendar.createEvent(titulo, fecha, fechaFin, { description: descripcion }); evento.setColor(getColorComercial(comercial)); sheet.getRange(row, 21).setValue(evento.getId()); Logger.log("Evento creado: " + titulo); } catch (err) { Logger.log("Error al crear evento: " + err.toString()); } } function testPerfil() { var fakeE = { parameter: { fecha: "25/03/2026", perfil: "Organizador", nombre: "Test", apellidos: "Prueba", telefono: "612345678", email: "test@test.com", instituto: "IES Test", poblacion: "Madrid", provincia: "Madrid", destino: "Malta", mes: "Junio", personas: "10", horario: "Manana", contacto: "WhatsApp" } }; doGet(fakeE); Logger.log("Test completado"); } function testCalendario() { var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); crearEvento(sheet, 2, new Date()); } function crearActivador() { var triggers = ScriptApp.getProjectTriggers(); for (var i = 0; i < triggers.length; i++) { if (triggers[i].getHandlerFunction() === "onEditTrigger") { ScriptApp.deleteTrigger(triggers[i]); } } ScriptApp.newTrigger("onEditTrigger") .forSpreadsheet(SpreadsheetApp.getActiveSpreadsheet()) .onEdit() .create(); Logger.log("Activador creado correctamente"); }