Utilisez la macro ONLYOFFICE pour analyser les données d’une feuille de calcul

6 septembre 2023By Dasha

Tandis que ChatGPT 4 offre désormais des fonctionnalités améliorées, certains utilisateurs préfèrent encore ChatGPT 3.5 en raison de son coût moins élevé en jetons. Cependant, ChatGPT 3.5 ne permet pas de télécharger des fichiers, ce qui empêche les utilisateurs d’analyser les feuilles de données. Dans cet article, nous allons montrer comment créer une macro ONLYOFFICE qui surmonte cette limitation, vous permettant d’analyser des feuilles de calcul à l’aide de l’API OpenAI.

Utilisez la macro ONLYOFFICE pour analyser les données d'une feuille de calcul

À propos de la macro

Pour dépasser cette limite, notre macro suit les étapes suivantes :

  1. Elle rassemble les valeurs des cellules sélectionnées dans la feuille de calcul.
  2. Compile ces valeurs dans un tableau.
  3. Convertit ce tableau en une ligne.
  4. L’envoie à un serveur proxy Node.js à l’aide d’une requête fetch.
  5. Le serveur récupère le tableau dans le corps de la requête.
  6. Ensuite, il utilise la bibliothèque OpenAI pour envoyer une demande d’API à OpenAI.
  7. Une fois la réponse reçue, le serveur la renvoie à la macro dans un objet réponse.

Pour des instructions détaillées sur la configuration du serveur proxy, y compris le code complet, consultez notre article dans le blog qui montre comment créer une macro pour remplir des feuilles de calcul avec des données provenant d’OpenAI.

Veuillez noter que cette macro est mieux adaptée aux tableaux de taille moyenne, typiquement autour de 50 lignes, en raison de la limitation de 4096 jetons du modèle ChatGPT 3.5.

Construction de la macro

Tout d’abord, nous récupérons la plage sélectionnée dans une feuille de calcul :

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

Nous créons ensuite un tableau vide appelé rowData pour stocker les données qui seront collectées dans les cellules sélectionnées :

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

Nous parcourons chaque cellule de la plage sélectionnée à l’aide d’une boucle ForEach. Pour chaque cellule, nous récupérons sa valeur à l’aide de la méthode GetValue, puis nous ajoutons cette valeur au tableau 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);
  });

Ensuite, nous convertissons les valeurs collectées dans le tableau rowData en une chaîne unique où les valeurs sont séparées par des virgules :

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

Nous créons un objet appelé 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
  };
  • Le champ prompt comprend la chaîne fusionnée des valeurs des cellules pour l’analyse.
  • Le champ apiKey contient la clé API utilisée par votre serveur Node.js pour authentifier les demandes de téléchargement entrantes.

Nous utilisons ensuite la fonction fetch pour envoyer une requête POST à l’URL spécifiée :

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

Nous traitons la réponse de l’API en la convertissant d’abord au format JSON, en enregistrant les données dans la console et en mettant en œuvre une gestion des erreurs en cas de problème avec la requête 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);
    });

Le code complet de la macro est le suivant :

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

Maintenant, exécutons notre macro et voyons comment elle fonctionne !

Exemple de fiche financière :

Exemple de fiche de données pour les employés :

Nous espérons que les informations présentées dans ce billet de blog contribueront à améliorer l’efficacité de votre travail. Nous vous encourageons à explorer et à mettre en œuvre nos différentes méthodes API dans votre travail quotidien.

Si vous avez des questions ou des idées créatives, n’hésitez pas à les partager avec nous. Nous sommes ouverts et enthousiastes à l’idée d’une éventuelle collaboration. Nous vous souhaitons bonne chance dans vos démarches exploratoires !

Créez votre compte ONLYOFFICE gratuit

Affichez, modifiez et coéditez des documents texte, feuilles de calcul, diapositives, formulaires et fichiers PDF en ligne.