Ir al contenido principal

Configuración de Google Sheets para recibir solicitudes del formulario

Paso 1: Crear Google Sheet

  1. Ve a Google Sheets
  2. Crea una nueva hoja de cálculo con el nombre: “Solicitudes Conductor Cali”
  3. En la primera hoja, crea las siguientes columnas en la fila 1:

Paso 2: Crear Google Apps Script

  1. En tu hoja de cálculo, ve a Extensiones > Apps Script
  2. Borra el código predeterminado y pega el siguiente 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());
}
  1. Guarda el script (Ctrl + S o Cmd + S)
  2. Dale un nombre al proyecto, por ejemplo: “Conductor Cali Form”

Paso 3: Desplegar el script

  1. Haz clic en el botón Deploy > New deployment
  2. Selecciona Web app como tipo de despliegue
  3. Configura los siguientes campos:
  4. Haz clic en Deploy
  5. Se te pedirá que autorices el script:
  6. Copia la URL del Web App que se genera - esta es tu SHEETS_URL

Paso 4: Actualizar el formulario

  1. Abre el archivo js/form.js
  2. Reemplaza la línea 8:
    const 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';
    

Paso 5: Probar la integración

  1. Abre tu sitio web
  2. Completa el formulario con datos de prueba
  3. Envía el formulario
  4. Verifica que los datos aparezcan en tu Google Sheet
  5. Revisa que el mensaje de éxito aparezca correctamente

Opcional: Configurar notificaciones por email

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);

Troubleshooting

Error “Hoja no encontrada”

Error de permisos

No llegan los datos

CORS errors

Sus datos son confidenciales y solo se usan para coordinar el servicio.

Le confirmaremos disponibilidad en menos de 30 minutos.

¿Qué servicio necesita?

Disponible 24/7. Agendamos con mínimo 2 horas de anticipación.

Le llegamos 10 minutos antes de la hora acordada.

Puede ser una dirección, hotel, barrio o punto de referencia en Cali.

Todo listo. Revise su solicitud.

Sin pago por adelantado
Confirmamos en <30 min
Datos 100% privados