Attribuer un identifiant unique à OFORMS

24 janvier 2023By Dasha

Les solutions ONLYOFFICE nous permettent de créer et d’utiliser sans effort des formulaires à remplir. Dans notre précédent article, nous vous avons montré une macro qui convertit des données CSV/TXT en une boîte combo remplissable.

Cette fois, nous allons rendre la documentation électronique plus organisée en construisant une macro qui attribue un identifiant unique à un formulaire à remplir.
Attribuer un identifiant unique à OFORMS

Conditions préalables

Dans notre nouveau projet, nous allons mettre en œuvre un concept similaire à celui utilisé avec la macro mentionnée ci-dessus.

Le code de la macro est le suivant :

   function LoadFile() {
        $.ajax({
            url: 'file:///C:/Users/LEOPARD/Desktop/Book1.csv',
            dataType: 'text',
        }).done(successFunction);
    } 
    function successFunction(data) {
    
        var arrAllRows = data.split("\n");
    
        var oComboBoxForm = Api.CreateComboBoxForm({ "key": "Personal information", "tip": "Choose your country", "required": true, "placeholder": "Country", "editable": false, "autoFit": false, "items": arrAllRows });
        var oParagraph = Api.CreateParagraph();
        oParagraph.AddElement(oComboBoxForm);
        oDocument.InsertContent([oParagraph]);
    }
    LoadFile();

Avec une nouvelle macro, nous allons également intégrer la méthode InsertContent. Elle insère un élément à l’endroit même où le curseur est positionné. Cependant, cette fois, le contenu inséré est différent.

Construction de la macro

Pour créer ce contenu, nous ajoutons la fonction generate. Nous y créons la variable key et lui attribuons la valeur blank. Plus tard, elle stockera la valeur générée. Nous ajoutons également la variable data. Elle contient des lettres et des chiffres en majuscules et en minuscules. Ce sont les éléments constitutifs de notre identifiant unique :

function generate () {
    let key = '';
    const data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 
            'abcdefghijklmnopqrstuvwxyz0123456789';
};

Puis, nous ajoutons une boucle for qui effectue 12 itérations. Chaque itération renvoie une valeur unique. Ainsi, 12 itérations produisent 12 caractères uniques pour l’identifiant. Ensuite, nous utilisons la méthode Math.random pour obtenir un index unique à chaque itération. Ensuite, nous utilisons cet index avec la méthode charAt pour extraire un caractère unique de la variable data. Nous assignons le résultat à la variable key et le retournons pour une utilisation ultérieure. Ensuite, nous invoquons la fonction generate et l’affectons à la variable id :

   for (let i = 1; i <= 12; i++) {
        let index = Math.floor(Math.random()
                    * data.length + 1);
          
        key += data.charAt(index)
    }
      
    return key;
};
 const id = generate();

Maintenant, nous devons insérer le contenu généré dans notre document. Tout d’abord, nous ciblons le formulaire actif :

var oDocument = Api.GetDocument();

Ensuite, nous créons un paragraphe et lui ajoutons un élément textuel. Nous enveloppons notre contenu généré dans cet élément en passant la variable id dans les paramètres :

var oParagraph = Api.CreateParagraph();
oParagraph.AddText(id);

Puis nous l’insérons. La méthode InsertContent insère un élément à l’emplacement du curseur. Nous spécifions également la propriété KeepTextOnly. En lui attribuant la valeur true, nous pouvons éviter tout problème de positionnement :

oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });

Le code entier de la macro est le suivant :

function generate () {
    let key = '';
    const data = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 
            'abcdefghijklmnopqrstuvwxyz0123456789';
      
    for (let i = 1; i <= 12; i++) {
        let index = Math.floor(Math.random()
                    * data.length + 1);
          
        key += data.charAt(index)
    }
      
    return key;
};
const id = generate();
var oDocument = Api.GetDocument();
var oParagraph = Api.CreateParagraph();
oParagraph.AddText(id);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true })

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

Nous espérons que vous trouverez cette macro utile et que vous l’intégrerez dans votre flux de travail. Les macros ONLYOFFICE sont extrêmement polyvalentes et permettent aux utilisateurs de manipuler les documents de diverses manières. Cette macro n’est qu’un des nombreux exemples de ce qui peut être réalisé en mettant en œuvre nos méthodes API.

Nous vous encourageons vivement à expérimenter et à vous lancer dans vos propres projets. N’hésitez pas à poser des questions ou à partager vos idées avec nous. Nous sommes ouverts à la discussion et à la coopération. Bonne chance dans vos explorations !