Assegna un ID univoco ai moduli OFORM

24 gennaio 2023By Elena

I prodotti ONLYOFFICE ci consentono di creare e operare senza sforzo con moduli compilabili. Nel nostro post precedente, ti abbiamo mostrato una macro che converte i dati CSV/TXT in una casella combinata compilabile.

Oggi renderemo la documentazione elettronica più organizzata costruendo una macro che assegna un ID univoco a un modulo compilabile. Assign a unique id to OFORMS

Prerequisiti

Nel nostro nuovo progetto, implementeremo un concetto simile che abbiamo usato con la macro menzionata sopra.

Il codice della macro è il seguente:

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

Con una nuova macro, incorporeremo anche il metodo InsertContent. Inserisce un elemento proprio dove è posizionato il cursore. Tuttavia, questa volta, il contenuto inserito è diverso.

Costruendo la macro

Per creare questo contenuto, aggiungiamo la funzione generate. Lì creiamo la variabile key e la impostiamo come vuota. Successivamente, memorizzerà il valore generato. Inoltre, aggiungiamo la variabile data. Contiene lettere maiuscole e minuscole e numeri. Questi sono gli elementi costitutivi del nostro ID univoco:

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

Quindi aggiungiamo un ciclo for loop che esegue 12 iterazioni. Ogni iterazione restituisce un valore univoco. Vuol dire 12 iterazioni producono 12 caratteri univoci per l’id. Quindi utilizziamo il metodo Math.random per ottenere un indice univoco a ogni iterazione. Successivamente, utilizziamo questo indice con il metodo charAt per recuperare un carattere univoco dalla variabile data. Assegniamo il risultato alla variabile key e lo restituiamo per un ulteriore utilizzo. Quindi invochiamo la funzione generate e la assegniamo alla variabile 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();

Ora dobbiamo inserire il contenuto generato nel nostro documento. Innanzitutto, prendiamo di target il modulo attivo:

var oDocument = Api.GetDocument();

Successivamente, creiamo un paragrafo e vi aggiungiamo un elemento di testo. Avvolgiamo il nostro contenuto generato in questo elemento mettendo la variabile id nei parametri:

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

Quindi lo inseriamo. Il metodo InsertContent incorpora un elemento proprio nella posizione del cursore. Specifichiamo anche la proprietà KeepTextOnly. Impostandolo su vero possiamo prevenire eventuali problemi di posizionamento:

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

L’intero codice della macro è il seguente:

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

Ora eseguiamo la nostra macro e vediamo come funziona!

Ci auguriamo che troverai utile questa macro e che la incorporerai nel tuo flusso di lavoro. Le macro di ONLYOFFICE sono estremamente versatili e consentono agli utenti di manipolare i documenti in vari modi. Questa macro è solo uno dei tanti esempi di cosa si può ottenere implementando i nostri metodi API.

Sei libero a sperimentare e intraprendere i tuoi progetti. Non esitare a fare domande o condividere le tue idee con noi. Siamo aperti al confronto e alla collaborazione. Buona fortuna!