ONLYOFFICE-Makro zur Analyse von Daten in Tabellenkalkulationen verwenden

13 September 2023By Vlad

Obwohl ChatGPT 4 jetzt erweiterte Funktionen bietet, bevorzugen einige Benutzer immer noch ChatGPT 3.5 wegen der niedrigeren Token-Kosten. In ChatGPT 3.5 fehlt jedoch die Möglichkeit, Dateien hochzuladen, was Benutzer daran hindert, Datenblätter zu analysieren. In diesem Blog-Beitrag zeigen wir Ihnen, wie Sie ein ONLYOFFICE-Makro erstellen können, das diese Einschränkung überwindet und es Ihnen ermöglicht, Tabellenkalkulationen mit der OpenAI-API zu analysieren.

Use ONLYOFFICE macro to analyze spreadsheet data

Über das Makro

Um diese Einschränkung zu umgehen, führt unser Makro Folgendes aus:

  1. Es sammelt ausgewählte Zellwerte aus der Tabellenkalkulation.
  2. Kompiliert diese Werte in ein Array.
  3. Konvertiert dieses Array in eine Zeichenkette.
  4. Sendet es mit einer Fetch-Anfrage an einen Node.js Proxy-Server.
  5. Der Server ruft das Array aus dem Anfragekörper ab.
  6. Er verwendet dann die OpenAI-Bibliothek, um eine API-Anfrage an OpenAI zu senden.
  7. Sobald die Antwort eingegangen ist, sendet der Server sie in einem Antwortobjekt an das Makro zurück.

Detaillierte Anweisungen zur Einrichtung des Proxy-Servers, einschließlich des vollständigen Codes, finden Sie in unserem Blogbeitrag, in dem gezeigt wird, wie man ein Makro zum Auffüllen von Tabellenkalkulationen mit Daten aus OpenAI erstellt.

Hinweis! Bitte beachten Sie, dass dieses Makro am besten für mittelgroße Tabellen mit typischerweise etwa 50 Zeilen geeignet ist, da das ChatGPT 3.5-Modell eine Token-Begrenzung von 4096 Token hat.

Erstellung eines Makros

Zuerst rufen wir den aktuell ausgewählten Bereich in einem Arbeitsblatt ab:

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

Dann erstellen wir ein leeres Array namens rowData, um die Daten zu speichern, die aus den ausgewählten Zellen gesammelt werden:

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

Mit einer ForEach-Schleife wird jede Zelle des ausgewählten Bereichs durchlaufen. Für jede Zelle wird der Wert mit der GetValue-Methode abgerufen und dann dem Array rowData hinzugefügt:

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

Danach konvertieren wir die im rowData-Array gesammelten Werte in eine einzige Zeichenkette, in der die Werte durch Kommas getrennt sind:

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

Wir erstellen ein Objekt namens 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
  };
  • Das Feld prompt enthält die zusammengefasste Zeichenfolge der Zellwerte für die Analyse.
  • Das Feld apiKey enthält den API-Schlüssel, der von Ihrem Node.js-Server zur Authentifizierung der eingehenden Abrufanforderungen verwendet wird.

Dann verwenden wir die fetch-Funktion, um eine POST-Anfrage an die angegebene URL zu senden:

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

Wir verarbeiten die API-Antwort, indem wir sie zunächst in das JSON-Format konvertieren, die Daten auf der Konsole protokollieren und auch eine Fehlerbehandlung implementieren, falls es Probleme mit der POST-Anfrage gibt:

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

Der gesamte Makrocode lautet wie folgt:

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

Führen wir nun unser Makro aus und sehen wir, wie es funktioniert!

Beispiel für ein Finanzdatenblatt:

Beispiel für ein Mitarbeiterdatenblatt:

Wir hoffen, dass die in diesem Beitrag vermittelten Erkenntnisse zu einer größeren Arbeitseffizienz beitragen können. Wir ermutigen Sie, unsere verschiedenen API-Methoden zu erforschen und in Ihre tägliche Arbeit zu integrieren.

Wenn Sie Fragen oder kreative Ideen haben, können Sie diese gerne mit uns teilen. Wir sind offen und begeistert von der Möglichkeit der Zusammenarbeit. Viel Glück bei der Arbeit mit Makros!