timestampnombretelefonoserviciofechahoraorigenpagecta_sourceExtensiones > Apps Script// Configuración
const SHEET_NAME = 'Solicitudes Conductor Cali';
const SHEET_TAB = 'Sheet1'; // Cambia si usas otro nombre de pestaña
function doGet(e) {
return handleResponse(e);
}
function doPost(e) {
return handleResponse(e);
}
function handleResponse(e) {
try {
// Obtener datos del formulario
const data = JSON.parse(e.postData.contents);
// Acceder a la hoja de cálculo
const sheet = SpreadsheetApp.getActiveSpreadsheet()
.getSheetByName(SHEET_TAB);
if (!sheet) {
return ContentService.createTextOutput(JSON.stringify({
status: 'error',
message: 'Hoja no encontrada'
})).setMimeType(ContentService.MimeType.JSON);
}
// Preparar fila para insertar
const newRow = [
data.timestamp || new Date().toISOString(),
data.nombre || '',
data.telefono || '',
data.servicio || '',
data.fecha || '',
data.hora || '',
data.origen || '',
data.page || '',
data.cta_source || ''
];
// Insertar nueva fila
sheet.appendRow(newRow);
// Respuesta de éxito
return ContentService.createTextOutput(JSON.stringify({
status: 'success',
message: 'Datos guardados correctamente'
})).setMimeType(ContentService.MimeType.JSON);
} catch (error) {
Logger.log('Error: ' + error.toString());
return ContentService.createTextOutput(JSON.stringify({
status: 'error',
message: error.toString()
})).setMimeType(ContentService.MimeType.JSON);
}
}
// Función para probar el script
function testScript() {
const testData = {
timestamp: new Date().toISOString(),
nombre: 'Test User',
telefono: '+57 300 000 0000',
servicio: 'conductor-elegido',
fecha: '2024-12-25',
hora: '20:00',
origen: 'Cali, Colombia',
page: 'https://conductor-cali.com',
cta_source: 'home-hero'
};
const mockEvent = {
postData: {
contents: JSON.stringify(testData)
}
};
const result = handleResponse(mockEvent);
Logger.log(result.getContent());
}
Deploy > New deploymentWeb app como tipo de despliegueDeploySHEETS_URLjs/form.jsconst SHEETS_URL = 'https://script.google.com/macros/s/YOUR_SCRIPT_ID/exec';
Con tu URL real:
const SHEETS_URL = 'https://script.google.com/macros/s/ACTUAL_SCRIPT_ID/exec';
Para recibir notificaciones por email cuando lleguen nuevas solicitudes, añade esta función al script:
function sendEmailNotification(data) {
const recipient = 'your-email@example.com'; // Cambia por tu email
const subject = 'Nueva solicitud de servicio - Conductor Cali';
const body = `
Nueva solicitud recibida:
Nombre: ${data.nombre}
Teléfono: ${data.telefono}
Servicio: ${data.servicio}
Fecha: ${data.fecha}
Hora: ${data.hora}
Origen: ${data.origen}
Enviado desde: ${data.page}
Origen CTA: ${data.cta_source}
`;
MailApp.sendEmail(recipient, subject, body);
}
// Y modifica la función handleResponse para incluir:
// sendEmailNotification(data);
form.js sea correctamode: 'no-cors' - el script funciona igualmode: 'cors' y configura dominios permitidos