¡Felicitaciones, usted ha terminado su formulario!
😊
Open ai const OPENAI_API_KEY = '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'; // Reemplaza con tu clave de API de OpenAI
function enviarAChatGPT() {
const hoja = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const ultimaFila = hoja.getLastRow();
// Suponiendo que los datos comienzan en la fila 2 (fila 1 son encabezados)
for (let fila = 2; fila <= ultimaFila; fila++) {
const status = hoja.getRange(fila, 15).getValue(); // Columna O
if (status === '') { // Procesar solo si la columna O está vacía
const datos = hoja.getRange(fila, 1, 1, 14).getValues()[0]; // Columnas A-N
// Mapea los datos a variables (ajusta según tus columnas)
const [nombreApellido, edad, respuesta1, respuesta2, respuesta3, respuesta4, respuesta5, respuesta6, respuesta7, respuesta8, respuesta9, respuesta10, respuesta11, respuesta12] = datos;
// Construye el prompt personalizado
const prompt = `
Hola ${nombreApellido},
Gracias por completar nuestro diagnóstico de piel. A tus ${edad} años, observamos que tu piel es **${respuesta1}**, y ${respuesta2}, lo que puede deberse a ${respuesta3}. Además, has mencionado ${respuesta4}, lo que sugiere que ${respuesta5}.
Es posible que ${respuesta6}. Incorporar ${respuesta7} y utilizar productos con ${respuesta8} puede ayudarte a ${respuesta9} y mejorar su apariencia.
¿Te gustaría ${respuesta10}? **¡${respuesta11}** diseñadas especialmente para ti y da el primer paso hacia una piel radiante y saludable!
`;
// Llama a la API de OpenAI
const respuestaChatGPT = llamarAPIChatGPT(prompt);
// Escribe la respuesta en la columna O
hoja.getRange(fila, 15).setValue(respuestaChatGPT);
// Opcional: Agregar un pequeño retraso para no exceder los límites de la API
Utilities.sleep(1000);
}
}
}
function llamarAPIChatGPT(prompt) {
const url = 'https://api.openai.com/v1/chat/completions';
const payload = {
model: "gpt-4",
messages: [
{ "role": "system", "content": "Eres un asistente que genera respuestas persuasivas basadas en los datos proporcionados." },
{ "role": "user", "content": prompt }
],
max_tokens: 300,
temperature: 0.7
};
const opciones = {
method: 'post',
contentType: 'application/json',
headers: {
'Authorization': `Bearer ${OPENAI_API_KEY}`
},
payload: JSON.stringify(payload)
};
try {
const respuesta = UrlFetchApp.fetch(url, opciones);
const datos = JSON.parse(respuesta.getContentText());
return datos.choices[0].message.content.trim();
} catch (error) {
Logger.log('Error al llamar a la API de OpenAI: ' + error);
return 'Error al generar la respuesta.';
}
Logger.log('Procesando fila: ' + fila);
}
Choosing a selection results in a full page refresh.