Utiliza la macro de ONLYOFFICE para analizar los datos de una hoja de cálculo
Aunque ChatGPT 4 ofrece ahora funciones mejoradas, algunos usuarios siguen prefiriendo ChatGPT 3.5 debido a su menor coste. Sin embargo, ChatGPT 3.5 carece de capacidades de carga de archivos, lo que impide a los usuarios analizar las hojas de datos. En esta entrada del blog vamos a demostrar cómo crear una macro de ONLYOFFICE que supera esta limitación, lo que te permitirá analizar hojas de cálculo utilizando la API de OpenAI.
Acerca de la macro
Para evitar esta limitación, nuestra macro sigue los siguientes pasos:
- Recoge los valores de las celdas seleccionadas de una hoja de cálculo.
- Compila estos valores en una matriz.
- Convierte esta matriz en una cadena.
- La envía mediante una solicitud fetch a un servidor proxy Node.js.
- El servidor recupera la matriz del cuerpo de la solicitud.
- A continuación, utiliza la biblioteca de OpenAI para enviar una solicitud de API a OpenAI.
- Una vez recibida la respuesta, el servidor la envía de vuelta a la macro dentro de un objeto de respuesta.
Para obtener las instrucciones detalladas sobre la configuración del servidor proxy, incluido el código completo, consulta nuestra entrada del blog que muestra cómo crear una macro para rellenar hojas de cálculo con los datos de OpenAI.
¡Ojo! Por favor, ten en cuenta que esta macro es más adecuada para tablas de tamaño medio, normalmente alrededor de 50 filas, debido a la limitación de tokens del modelo ChatGPT 3.5 de 4096 tokens.
Creación de la macro
En primer lugar, recuperamos el rango seleccionado actualmente en una hoja de cálculo:
// Get the selected range using ONLYOFFICE API
var selection = Api.GetSelection();
A continuación creamos una matriz vacía llamada rowData para almacenar los datos que se recogerán de las celdas seleccionadas:
// Initialize an array to store all data
var rowData = [];
Iteramos a través de cada celda en el rango seleccionado usando un bucle ForEach. Para cada celda, recuperamos su valor utilizando el método GetValue y luego añadimos ese valor a la matriz rowData:
// Use ForEach to iterate through the selected range
selection.ForEach(function (cell) {
// Retrieve the cell value using ONLYOFFICE API
var cellValue = cell.GetValue();
// Add cell value to the rowData array
rowData.push(cellValue);
});
A continuación, convertimos los valores recogidos en la matriz rowData en una única cadena en la que los valores están separados por comas:
// Merge the values in rowData and separate them by commas
var rowDataAsString = rowData.join(',');
Creamos un objeto llamado requestData:
// Prepare the data to send in the POST request
var requestData = {
prompt: `analyze this data ${rowDataAsString}`, // Use the merged string here
apiKey: '<APIkey>', // Replace with your API key
};
- El campo prompt incluye la cadena combinada de los valores de celda para el análisis.
- El campo apiKey contiene la clave API utilizada por el servidor Node.js para autenticar las solicitudes fetch entrantes.
A continuación, utilizamos la función fetch para enviar una solicitud POST a la URL especificada:
fetch('http://localhost:3000/completion', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(requestData),
})
Gestionamos la respuesta de la API convirtiéndola primero a formato JSON, registrando los datos en la consola e implementando la gestión de errores en caso de que haya algún problema con la solicitud POST:
.then(function (response) {
return response.json();
})
.then(function (data) {
// Log the API response
console.log(data);
})
.catch(function (error) {
// Handle any errors that occur during the fetch
console.error('Error:', error);
});
El código completo de la macro es el siguiente:
(function()
{
// Get the selected range using ONLYOFFICE API
var selection = Api.GetSelection();
// Initialize an array to store all data
var rowData = [];
// Use ForEach to iterate through the selected range
selection.ForEach(function (cell) {
// Retrieve the cell value using ONLYOFFICE API
var cellValue = cell.GetValue();
// Add cell value to the rowData array
rowData.push(cellValue);
});
// Merge the values in rowData and separate them by commas
var rowDataAsString = rowData.join(',');
// Prepare the data to send in the POST request
var requestData = {
prompt: `analyze this data ${rowDataAsString}`, // Use the merged string here
apiKey: '<APIkey>', // Replace with your API key
};
// Send the data to the API (replace the URL with your OpenAI API endpoint)
fetch('http://localhost:3000/completion', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify(requestData),
})
.then(function (response) {
return response.json();
})
.then(function (data) {
// Log the API response
console.log(data);
})
.catch(function (error) {
// Handle any errors that occur during the fetch
console.error('Error:', error);
});
})();
Ahora, ¡ejecutemos nuestra macro para ver cómo funciona!
Ejemplo de una hoja de datos financieros:
Ejemplo de una hoja con los datos de empleados:
Esperamos que las ideas compartidas en esta entrada del blog puedan contribuir a una mayor eficiencia en el trabajo. Te animamos a que explores y pongas en práctica nuestros distintos métodos de la API en tu trabajo diario.
Si tienes alguna duda o idea creativa, no dudes en compartirla con nosotros. Estamos abiertos y muy interesados en la posibilidad de colaborar. Te deseamos mucha suerte en tus esfuerzos exploratorios.
Enlaces útiles
API de hojas de cálculo de ONLYOFFICE
Página de la documentación de la API de OpenAI
Cómo utilizar la macro de ONLYOFFICE para generar un ensayo con ChatGPT
Cómo utilizar la macro de ONLYOFFICE para rellenar las celdas con los datos de OpenAI