Cómo asignar un identificador único a los OFORMS

24 enero 2023By Sergey

Los productos de ONLYOFFICE nos permiten crear y operar con formularios rellenables sin esfuerzo. En nuestro post anterior mostramos una macro que convierte datos CSV/TXT en un cuadro combinado rellenable.

Esta vez, haremos la documentación electrónica más organizada creando una macro que asigna un identificador único a un formulario rellenable.

Cómo asignar un identificador único a los OFORMS

Requisitos

En nuestro nuevo proyecto implementaremos un concepto similar al que utilizamos con la macro mencionada anteriormente.

El código de la macro es el siguiente:

   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 nueva macro, incorporaremos también el método InsertContent. Este método inserta un elemento justo donde se sitúa el cursor. Sin embargo, esta vez el contenido insertado es diferente.

Creación de la macro

Para crear este contenido, añadimos la función generate. Allí creamos la variable key y la ponemos en blanco. Más tarde, almacenará el valor generado. Además, añadimos la variable data. Contiene letras mayúsculas y minúsculas y números. Estos son los componentes básicos de nuestro identificador único:

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

A continuación añadimos un bucle for que realiza 12 iteraciones. Cada iteración devuelve un valor único. Así que 12 iteraciones producen 12 caracteres únicos para el identificador. Luego usamos el método Math.random para obtener un índice único en cada iteración. Después, usamos este índice con el método charAt para recuperar un carácter único de la variable data. Asignamos el resultado a la variable key y lo devolvemos para su uso posterior. Luego invocamos la función generate y la asignamos a 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();

Ahora tenemos que insertar el contenido generado en nuestro documento. En primer lugar, nos dirigimos a la forma activa:

var oDocument = Api.GetDocument();

Después, creamos un párrafo y le añadimos un elemento de texto. Envolvemos nuestro contenido generado en este elemento pasando la variable id en los parámetros:

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

Luego lo insertamos. El método InsertContent inserta un elemento justo en la posición del cursor. También especificamos la propiedad KeepTextOnly. Al establecerla en “true” podemos prevenir cualquier posible problema de posicionamiento:

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

El código completo de la macro es el siguiente:

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

Ahora vamos a ejecutar nuestra macro y ver cómo funciona:

Esperamos que esta macro te resulte útil y la incorpores a tu flujo de trabajo. Las macros de ONLYOFFICE son extremadamente versátiles y permiten a los usuarios manipular documentos de varias maneras. Esta macro es sólo uno de los muchos ejemplos de lo que se puede lograr mediante la implementación de nuestros métodos API.

Te animamos a que experimentes y realices tus propios proyectos. No dudes en hacernos preguntas o compartir tus ideas con nosotros. Estamos abiertos al debate y la cooperación. Te deseamos mucha suerte en tus exploraciones