function onEdit(e) { const webhookUrl = "TU_WEBHOOK_URL"; const sheet = e.source.getActiveSheet(); const range = e.range; const row = range.getRow(); const col = range.getColumn(); const lastColumn = sheet.getLastColumn(); // Última columna con datos const rowData = sheet.getRange(row, 1, 1, lastColumn).getValues()[0]; // Obtiene toda la fila const headers = sheet.getRange(1, 1, 1, lastColumn).getValues()[0]; // Títulos de columnas const rowObject = headers.reduce((acc, header, index) => { acc[header] = rowData[index]; // Asigna valores con clave = encabezado return acc; }, {}); const payload = { sheetName: sheet.getName(), row: row, column: col, editedValue: range.getValue(), rowData: rowObject, // Envía toda la fila con claves según los encabezados editedBy: Session.getActiveUser().getEmail() || "Unknown User", timestamp: new Date().toISOString() }; const options = { method: "post", contentType: "application/json", payload: JSON.stringify(payload) }; UrlFetchApp.fetch(webhookUrl, options); }