function doPost(e) {
try {
var data = JSON.parse(e.postData.contents);
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheet = ss.getActiveSheet();
// 1. Inicializar encabezados si la hoja está vacía
if (sheet.getLastRow() === 0) {
sheet.appendRow([
"Fecha", "Nombre", "Empresa", "Cargo", "Móvil", "Fijo",
"Email", "Web", "Dirección", "LinkedIn", "Instagram", "Facebook",
"TikTok", "Google Reviews", "Nota", "Plan", "Estado Pago", "URL Logo Drive", "URL QR Drive", "Email Enviado"
]);
}
// 2. Crear o buscar carpetas en Google Drive
var folderLogos = getOrCreateFolder("RCW Innovation - Logos Clientes");
var folderQRs = getOrCreateFolder("RCW Innovation - QRs Generados");
// 3. Guardar Logo en Drive (si existe)
var logoDriveUrl = "Sin Logo";
var logoBlob = null;
if (data.logoBase64 && data.logoBase64.indexOf("data:image") !== -1) {
var splitLogo = data.logoBase64.split(",");
var contentTypeLogo = splitLogo[0].split(";")[0].replace("data:", "");
var bytesLogo = Utilities.base64Decode(splitLogo[1]);
logoBlob = Utilities.newBlob(bytesLogo, contentTypeLogo, (data.fullName || "empresa") + "_logo.png");
var fileLogo = folderLogos.createFile(logoBlob);
fileLogo.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
logoDriveUrl = fileLogo.getUrl();
}
// 4. Guardar Código QR en Drive (si se envió canvas base64)
var qrDriveUrl = "No Adjunto";
var qrBlob = null;
if (data.qrBase64 && data.qrBase64.indexOf("data:image") !== -1) {
var splitQR = data.qrBase64.split(",");
var contentTypeQR = splitQR[0].split(";")[0].replace("data:", "");
var bytesQR = Utilities.base64Decode(splitQR[1]);
qrBlob = Utilities.newBlob(bytesQR, contentTypeQR, (data.fullName || "contacto") + "_QR_RCW.png");
var fileQR = folderQRs.createFile(qrBlob);
fileQR.setSharing(DriveApp.Access.ANYONE_WITH_LINK, DriveApp.Permission.VIEW);
qrDriveUrl = fileQR.getUrl();
}
// 5. Enviar Correo Automatizado al Usuario desde info@rcwinnovation.com
var emailSentStatus = "No Solicitado";
if (data.email && data.sendEmailCopy && qrBlob) {
try {
var attachments = [qrBlob];
var subject = "Tu Código QR Inteligente está listo | RCW Innovation";
var htmlBody = ""
+ "<div style='font-family: Arial, sans-serif; max-width: 600px; margin: 0 auto; background: #0f172a; color: #ffffff; padding: 25px; border-radius: 12px;'>"
+ " <h2 style='color: #06b6d4; margin-top: 0;'>¡Felicidades por potenciar tu presencia digital!</h2>"
+ " <p style='font-size: 14px; color: #cbd5e1;'>Hola <strong>" + (data.fullName || "Cliente") + "</strong>,</p>"
+ " <p style='font-size: 14px; color: #cbd5e1; line-height: 1.6;'>"
+ " Gracias por generar tu Código QR inteligente con la tecnología de <strong style='color: #818cf8;'>RCW Innovation</strong>. "
+ " Adjunto a este correo encontrarás tu código QR en formato de <strong>alta calidad listo para imprimir y compartir</strong>."
+ " </p>"
+ " <div style='background: #1e293b; padding: 15px; border-radius: 8px; margin: 20px 0; border-left: 4px solid #06b6d4;'>"
+ " <p style='margin: 0 0 8px 0; font-weight: bold; color: #38bdf8;'>Beneficios de tu nuevo Código QR:</p>"
+ " <ul style='margin: 0; padding-left: 20px; font-size: 13px; color: #94a3b8;'>"
+ " <li><strong style='color: #ffffff;'>Escaneos Ilimitados:</strong> No tiene fecha de vencimiento ni límite de lecturas.</li>"
+ " <li><strong style='color: #ffffff;'>100% Funcional Sin Internet:</strong> Guarda tus contactos al instante en teléfonos iOS y Android.</li>"
+ " <li><strong style='color: #ffffff;'>Plan Seleccionado:</strong> " + (data.plan || "Free") + "</li>"
+ " </ul>"
+ " </div>"
+ " <p style='font-size: 12px; color: #94a3b8; line-height: 1.5;'>"
+ " <em>* Recuerda que tu tarjeta digital es permanente. Si más adelante deseas actualizar tus datos corporativos en la versión Pro, solo generarás una nueva versión por $20 USD.</em>"
+ " </p>"
+ " <hr style='border: 0; border-top: 1px solid #334155; margin: 25px 0;' />"
+ " <p style='font-size: 11px; color: #64748b; text-align: center;'>"
+ " RCW Innovation • Soluciones Tecnológicas Globales • <a href='https://rcwinnovation.ca' style='color: #06b6d4;'>rcwinnovation.ca</a> • info@rcwinnovation.com"
+ " </p>"
+ "</div>";
MailApp.sendEmail({
to: data.email,
subject: subject,
htmlBody: htmlBody,
name: "RCW Innovation",
replyTo: "info@rcwinnovation.com",
attachments: attachments
});
emailSentStatus = "Enviado Exitosamente";
} catch (mailErr) {
emailSentStatus = "Error: " + mailErr.toString();
}
}
// 6. Registrar fila completa en Google Sheet
sheet.appendRow([
new Date(),
data.fullName || "",
data.organization || "",
data.title || "",
data.cellPhone || "",
data.workPhone || "",
data.email || "",
data.website || "",
data.address || "",
data.linkedin || "",
data.instagram || "",
data.facebook || "",
data.tiktok || "",
data.googleReviews || "",
data.note || "",
data.plan || "Free",
data.paymentStatus || "No Aplica",
logoDriveUrl,
qrDriveUrl,
emailSentStatus
]);
return ContentService.createTextOutput(JSON.stringify({
status: "success",
logoUrl: logoDriveUrl,
qrUrl: qrDriveUrl,
emailStatus: emailSentStatus
})).setMimeType(ContentService.MimeType.JSON);
} catch (error) {
return ContentService.createTextOutput(JSON.stringify({
status: "error",
message: error.toString()
})).setMimeType(ContentService.MimeType.JSON);
}
}
function getOrCreateFolder(folderName) {
var folders = DriveApp.getFoldersByName(folderName);
if (folders.hasNext()) {
return folders.next();
}
return DriveApp.createFolder(folderName);
}