Utilizza la macro ONLYOFFICE per analizzare i dati del foglio di calcolo

6 settembre 2023By Serge

Sebbene ChatGPT 4 ora offra funzionalità migliorate, alcuni utenti preferiscono ancora ChatGPT 3.5 a causa del costo del token inferiore. Tuttavia, ChatGPT 3.5 non dispone della funzionalità di caricamento dei file, impedendo agli utenti di analizzare le schede tecniche. In questo post del blog, dimostreremo come creare una macro di ONLYOFFICE che superi questa limitazione, consentendoti di analizzare i fogli di calcolo utilizzando l’API OpenAI.

Use ONLYOFFICE macro to analyze spreadsheet data

A proposito delle macro

Per aggirare questa limitazione, la nostra macro segue questi passi:

  1. Raccoglie i valori delle celle selezionate dal foglio di calcolo.
  2. Compila questi valori in un array.
  3. Converte questo array in una stringa.
  4. Lo invia utilizzando una richiesta di recupero a un server proxy Node.js.
  5. Il server recupera l’array dal corpo della richiesta.
  6. Utilizza quindi la libreriaOpenAI per inviare una richiesta API a OpenAI.
  7. Una volta ricevuta la risposta, il server la rinvia alla macro all’interno di un oggetto risposta.

Per istruzioni dettagliate sulla configurazione del server proxy, incluso il codice completo, consulta il nostro post del blog che dimostra come creare una macro per popolare fogli di calcolo con dati da OpenAI.

Nota! Tieni presente che questa macro è più adatta per tabelle di medie dimensioni, in genere circa 50 righe, a causa della limitazione del modello ChatGPT 3.5 di 4096 token.

Costruzione della macro

Per prima cosa recuperiamo l’intervallo attualmente selezionato da un foglio di calcolo:

// Get the selected range using ONLYOFFICE API
var selection = Api.GetSelection();

Quindi creiamo un array vuoto chiamato rowData per memorizzare i dati che verranno raccolti dalle celle selezionate:

  // Initialize an array to store all data
  var rowData = [];

Iteriamo su ogni cella nell’intervallo selezionato utilizzando un ciclo ForEach. Per ogni cella, recuperiamo il suo valore utilizzando il metodo GetValue, quindi aggiungiamo quel valore all’array 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);
  });

Successivamente convertiamo i valori raccolti nell’array rowData in un’unica stringa in cui i valori sono separati da virgole:

 // Merge the values in rowData and separate them by commas
  var rowDataAsString = rowData.join(',');

Creiamo un oggetto chiamato 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
  };
  • Il campo prompt include la stringa unita di valori di cella per l’analisi.
  • Il campo apiKey contiene la chiave API utilizzata dal tuo server Node.js per autenticare le richieste di recupero in entrata.

Quindi utilizziamo la funzione fetch per inviare una richiesta POST all’URL specificato:

 fetch('http://localhost:3000/completion', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: JSON.stringify(requestData),
  })

Gestiamo la risposta API convertendola prima in formato JSON, registrando i dati sulla console e implementando anche la gestione degli errori nel caso in cui si verifichino problemi con la richiesta 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);
    });

Il codice intero della macro è il seguente:

(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);
    });
})();

Ora eseguiamo la nostra macro e vediamo come funziona!

Esempio di scheda dati finanziaria:

Esempio di scheda dati del dipendente:

Ci auguriamo che gli approfondimenti condivisi in questo post del blog possano contribuire a una maggiore efficienza del lavoro. Ti invitiamo a esplorare e implementare i nostri vari metodi API nel tuo lavoro quotidiano.

Se hai domande o idee creative, non esitare a condividerle con noi. Siamo aperti alla collaborazione. In bocca al lupo!