function doGet(e) {
return HtmlService.createTemplateFromFile('index')
.evaluate()
.setTitle('Agrega aquí el titulo de tu app');
}
function include(filename) {
return HtmlService.createHtmlOutputFromFile(filename).getContent();
}
Este módulo:
* Recibe una petición web.
* Carga index.html.
* Procesa el template.
* Define el título.
* Permite incluir archivos HTML adicionales.
==index.html==
EJEMPLO DE TITULO
!= include('CSS'); ?>
!= include('JS'); ?>
Este archivo es la interfaz de usuario de tu Web App, que muestra un formulario dinámico con validación básica y campos condicionales, usando modularización de HTML, CSS y JS dentro de Apps Script.
==CSS.html==
Este modulo o archivo hace el estilo de la web app
==JS.html==
Este modulo:
* Intercepta el envío del formulario.
* Valida los datos en el navegador.
* Muestra un loading profesional.
* Envía los datos al servidor (Apps Script).
* Maneja todas las posibles respuestas del backend.
* Muestra mensajes según el resultado.
Es el controlador frontend que valida datos, se comunica con Apps Script y maneja la lógica de inscripción según la respuesta del servidor.
==validator.gs==
function registrarConductor(nombre, apellido, telefono, dni, email, localidad, condicion, institucion, nivelEducativo) {
var ss = SpreadsheetApp.openById('Acá pones el ID de tu Sheet'); // ID de la hoja
var sheet = ss.getSheetByName('registro'); //Acá el nombre de tu hoja, o tabla
var registros = sheet.getDataRange().getValues();
var MAX_CUPOS = 400; // Puse un cupo, para tener un freno.
if ((registros.length - 1) >= MAX_CUPOS) {
return "cuposCompletos";
}
// Verificar si el DNI ya existe (columna D - índice 3)
for (var i = 1; i < registros.length; i++) { // Empezamos en la fila 1 para omitir encabezados
if (registros[i][3] == dni) { // Columna D (DNI)
return "existente"; // DNI ya registrado
}
}
// Verificar si el Email ya existe (columna F - índice 5)
for (var i = 1; i < registros.length; i++) { // Empezamos en la fila 1 para omitir encabezados
if (registros[i][5] == email) { // Columna F (Email)
return "emailExistente"; // Email ya registrado
}
}
// Calcular el siguiente ID (columna A)
var id = registros.length;
// Agregar un nuevo registro (orden correcto según las columnas)
sheet.appendRow([
id, // A: ID
nombre, // B: NOMBRES
apellido, // C: APELLIDOS
dni, // D: DNI
telefono, // E: TELÉFONO
email, // F: EMAIL
localidad, // G: LOCALIDAD
condicion, // H: CONDICIÓN
institucion, // I: INSTITUCIÓN
nivelEducativo // J: NIVEL EDUCATIVO
]);
return "registrado"; // Confirmación de registro exitoso
}
Esta función es el controlador de negocio que valida cupos, previene duplicados y guarda la inscripción en Google Sheets, devolviendo estados específicos al frontend.
[[CoDES:CoDES|← Volver al Codes]]