SAIG24 · MARKET24
Tus respuestas han sido registradas y nos ayudarán a seguir mejorando nuestro servicio en Market24.
Sigue estos pasos para vincular los resultados de la encuesta a tu hoja de cálculo:
function doPost(e) {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
if (sheet.getLastRow() === 0) {
sheet.appendRow([
"Fecha",
"ID Sucursal",
"Nombre Sucursal",
"Experiencia de Compra",
"Encontró lo que Buscaba",
"Productos No Encontrados",
"Calificación Atención",
"Recibió Ticket/Comprobante",
"Mejoras Sugeridas",
"Desea Escalar Caso",
"Nombre Contacto",
"Teléfono Contacto"
]);
}
try {
var data = JSON.parse(e.postData.contents);
sheet.appendRow([
new Date(),
data.sucursalId,
data.sucursalNombre,
data.experiencia,
data.encontrado,
data.productosNoEncontrados,
data.atencion,
data.recibioTicket,
data.mejoras,
data.deseaEscalar || "No aplica",
data.escalarNombre || "",
data.escalarTelefono || ""
]);
// Enviar correo de notificación
var emailRecipient = "genesis.zarraga93@gmail.com, willfonso@gmail.com";
var subject = "⚠️ Nueva Encuesta de Satisfacción - SAIG24 (" + data.sucursalNombre + ")";
var estrellas = "";
for (var i = 0; i < 5; i++) {
estrellas += i < data.experiencia ? "★" : "☆";
}
var esEscalado = data.deseaEscalar === "Sí";
var colorAlerta = esEscalado ? "#ef4444" : "#e2e8f0";
var bgAlerta = esEscalado ? "#fef2f2" : "#f8fafc";
var textoAlerta = esEscalado ? "#991b1b" : "#475569";
var htmlBody =
'<div style="font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; padding: 20px; border: 1px solid #e2e8f0; border-radius: 8px; background-color: #ffffff;">' +
'<div style="background-color: #0c0706; padding: 15px; border-radius: 6px; text-align: center; margin-bottom: 20px;">' +
'<h2 style="color: #ee965b; margin: 0; font-family: Arial, sans-serif; font-size: 20px; letter-spacing: 1px;">SAIG24 · MARKET24</h2>' +
'<p style="color: #ffffff; margin: 5px 0 0 0; font-size: 14px;">Nueva Encuesta Registrada</p>' +
'</div>' +
'<h3 style="color: #1e293b; border-bottom: 2px solid #e2e8f0; padding-bottom: 8px; margin-top: 0;">Detalles del Registro</h3>' +
'<table style="width: 100%; border-collapse: collapse; margin-bottom: 20px;">' +
'<tr style="background-color: #f8fafc;">' +
'<td style="padding: 10px; font-weight: bold; width: 40%; color: #475569;">Fecha:</td>' +
'<td style="padding: 10px; color: #1e293b;">' + new Date().toLocaleString() + '</td>' +
'</tr>' +
'<tr>' +
'<td style="padding: 10px; font-weight: bold; color: #475569;">Sucursal:</td>' +
'<td style="padding: 10px; color: #1e293b;">' + data.sucursalNombre + ' (ID: ' + data.sucursalId + ')</td>' +
'</tr>' +
'<tr style="background-color: #f8fafc;">' +
'<td style="padding: 10px; font-weight: bold; color: #475569;">Experiencia de Compra:</td>' +
'<td style="padding: 10px; color: #1e293b; font-size: 16px;">' + estrellas + ' (' + data.experiencia + '/5)</td>' +
'</tr>' +
'<tr>' +
'<td style="padding: 10px; font-weight: bold; color: #475569;">¿Encontró todo?:</td>' +
'<td style="padding: 10px; color: #1e293b;">' +
'<span style="color: ' + (data.encontrado === 'Sí' ? '#10b981' : '#ef4444') + '; font-weight: bold;">' + data.encontrado + '</span>' +
(data.encontrado === 'No' ? '<br><span style="color: #64748b; font-size: 13px;">Productos no encontrados: ' + data.productosNoEncontrados + '</span>' : '') +
'</td>' +
'</tr>' +
'<tr style="background-color: #f8fafc;">' +
'<td style="padding: 10px; font-weight: bold; color: #475569;">Atención Recibida:</td>' +
'<td style="padding: 10px; color: #1e293b; font-weight: bold;">' + data.atencion + '</td>' +
'</tr>' +
'<tr>' +
'<td style="padding: 10px; font-weight: bold; color: #475569;">¿Recibió Ticket?:</td>' +
'<td style="padding: 10px; color: #1e293b;">' + data.recibioTicket + '</td>' +
'</tr>' +
'<tr style="background-color: #f8fafc;">' +
'<td style="padding: 10px; font-weight: bold; color: #475569;">Sugerencias de Mejora:</td>' +
'<td style="padding: 10px; color: #1e293b; font-style: italic;">' + (data.mejoras || 'Sin sugerencias') + '</td>' +
'</tr>' +
'</table>' +
'<h3 style="color: #1e293b; border-bottom: 2px solid #e2e8f0; padding-bottom: 8px; margin-top: 25px;">Seguimiento / Escalación del Caso</h3>' +
'<div style="padding: 15px; border-radius: 6px; border: 1px solid ' + colorAlerta + '; background-color: ' + bgAlerta + ';">' +
'<p style="margin-top: 0; font-weight: bold; color: ' + textoAlerta + ';">' +
'¿Desea escalar el caso?: ' + (data.deseaEscalar || 'No') +
'</p>' +
(esEscalado ? (
'<table style="width: 100%; border-collapse: collapse; margin-top: 10px;">' +
'<tr>' +
'<td style="padding: 5px 0; font-weight: bold; width: 35%; color: #7f1d1d;">Cliente:</td>' +
'<td style="padding: 5px 0; color: #1e293b;">' + data.escalarNombre + '</td>' +
'</tr>' +
'<tr>' +
'<td style="padding: 5px 0; font-weight: bold; color: #7f1d1d;">Teléfono / WhatsApp:</td>' +
'<td style="padding: 5px 0; color: #1e293b; font-weight: bold;"><a href="https://wa.me/' + data.escalarTelefono.replace(/\D/g, "") + '" target="_blank" style="color: #10b981; text-decoration: none;">📞 ' + data.escalarTelefono + ' (Chat directo)</a></td>' +
'</tr>' +
'</table>'
) : '<p style="margin: 0; color: #64748b; font-style: italic;">El cliente prefirió no dejar datos de contacto.</p>') +
'</div>' +
'<div style="margin-top: 25px; font-size: 11px; color: #94a3b8; text-align: center; border-top: 1px solid #e2e8f0; padding-top: 15px;">' +
'Este correo fue generado automáticamente por el portal de encuestas Market 24.<br>' +
'Para que el remitente sea <strong>zonawilliam.cadenak24@gmail.com</strong>, este script debe ser implementado usando dicha cuenta de Google.' +
'</div>' +
'</div>';
MailApp.sendEmail({
to: emailRecipient,
subject: subject,
htmlBody: htmlBody
});
return ContentService.createTextOutput(JSON.stringify({ "status": "success" }))
.setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService.createTextOutput(JSON.stringify({ "status": "error", "message": error.toString() }))
.setMimeType(ContentService.MimeType.JSON);
}
}
function doOptions(e) {
return ContentService.createTextOutput("")
.setMimeType(ContentService.MimeType.TEXT);
}