Cómo dominar la versión 8.0 de ONLYOFFICE: descubriendo los nuevos métodos de formulario de la API del Document Builder

12 febrero 2024By Sergey

Con el lanzamiento de la versión 8.0, se ha introducido un conjunto de nuevos métodos API del Document Builder. En esta entrada del blog, vamos a profundizar en dos de estos métodos y demostrar cómo incorporarlos en dos macros de ONLYOFFICE, agilizando la experiencia de trabajar con plantillas de formularios.

Cómo dominar la versión 8.0 de ONLYOFFICE: descubriendo los nuevos métodos de formulario de la API del Document Builder

Acerca de los nuevos métodos

  • GetFormsData

El método GetFormsData recupera una matriz que contiene los datos de todos los elementos de formulario que aparecen en el documento.

expression.GetFormsData();

Donde expression es una variable que representa la clase ApiDocument.

Utilizando este método, puedes recuperar datos específicos de los formularios de un documento, lo que te permite modificar dinámicamente los formularios en función de sus tipos y propiedades.

  • SetFormsData

Al contrario que el método anterior, SetFormsData no devuelve ningún dato. Sin embargo nos permite establecer el valor de los elementos del formulario.

expression.SetFormsData();

Donde expression es una variable que representa la clase ApiDocument.

Los parámetros del método se pasan en el formato de la matriz FormData donde se especifican la clave y el valor del formulario. Además, existe la opción de especificar el tipo de formulario.

Empleando este método, puedes definir fácilmente valores predeterminados para todos los elementos relevantes del formulario, automatizando la edición dinámica del documento.

Macro para modificar campos de texto: Implementación de GetFormsData

Esta macro permite modificar todos los campos de texto del documento. También se puede personalizar para realizar cambios en otros tipos de formularios.

Primero nos dirigimos al documento activo:

const oDocument = Api.GetDocument();

A continuación, recuperamos una matriz (aForms) que contiene todos los elementos de formulario presentes en el documento.

const aForms = oDocument.GetAllForms();

A continuación, recopilamos datos sobre todos los formularios del documento y los almacenamos en la variable formsData:

const formsData = oDocument.GetFormsData();

Luego, añadimos un bucle que itera a través de cada elemento de forma en la matriz:

for (let i = 0; i < aForms.length; i++) {
}

Comprobamos si el tipo del formulario actual es “text”. Si es cierto, en las líneas siguientes hacemos cambios en los elementos del formulario:

if (formsData[i]["type"] == "text") {
  //aForms[i].SetBackgroundColor(205, 0, 0); // <---- Sets/Changes the Background Color of all the form elements.
  //aForms[i].SetBorderColor(205, 0, 0);       //<---- Unccomment if you want to set/change the border color for all the form elements.
  //aForms[i].SetPlaceholderText("Placeholder Text");       //<---- Unccomment if you want to set/change the Placeholder Text for all the form elements.
  //aForms[i].SetRequired(true);          //<---- Unccomment if you want to set/change the 'required' property for all the form elements.
  //aForms[i].SetTipText("Tip Text");       //<---- Unccomment if you want to set/change the Tip Text for all the form elements.
}

Aquí cada línea se comenta con una descripción de la acción que realiza.

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

(function() {
  const oDocument = Api.GetDocument();
  const aForms = oDocument.GetAllForms();
  const formsData = oDocument.GetFormsData();

  for (let i = 0; i < aForms.length; i++) {
    if (formsData[i]["type"] == "text") {
      // Uncomment the following lines based on your preferences:
      // aForms[i].SetBackgroundColor(205, 0, 0); // Sets/Changes the Background Color of all the form elements.
      // aForms[i].SetBorderColor(205, 0, 0);     // Uncomment if you want to set/change the border color for all the form elements.
      // aForms[i].SetPlaceholderText("Placeholder Text"); // Uncomment if you want to set/change the Placeholder Text for all the form elements.
      // aForms[i].SetRequired(true);        // Uncomment if you want to set/change the 'required' property for all the form elements.
      // aForms[i].SetTipText("Tip Text");   // Uncomment if you want to set/change the Tip Text for all the form elements.
    }
  }
})();

Macro para establecer los valores predeterminados de los formularios: Implementación de SetFormsData

Utilizando la segunda macro, podemos ajustar fácilmente y sin problemas los valores de los formularios seleccionados. La macro es bastante sencilla y puede realizarse en unos pocos pasos.

Primero recuperamos el documento activo:

const oDocument = Api.GetDocument();

A continuación, empleamos el método SetFormsData, donde definimos la clave del elemento y el valor por defecto deseado dentro de los parámetros del método:

oDocument.SetFormsData([
  {key: "CompanyName", value: "OnlyOffice"}
]);

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

The entire macro code is the following:
const oDocument = Api.GetDocument();
oDocument.SetFormsData([
  {key: "CompanyName", value: "OnlyOffice"}
]);

Esperamos que los métodos y macros mostrados te resulten útiles para agilizar el flujo de trabajo documental. Las macros son herramientas poderosas y nuestra amplia biblioteca API ofrece un gran número de posibilidades para automatizar diversas tareas.

No dudes en explorar nuestra API y crear macros personalizadas que aprovechen las potentes funciones del procesamiento de documentos. Ponte en contacto con nosotros para compartir tus ideas innovadoras. Damos la bienvenida a los debates abiertos y a la colaboración. Te deseamos mucha suerte en tus esfuerzos exploratorios.