Cómo resaltar campos de texto vacíos con un texto de sugerencia específico usando una macro de ONLYOFFICE
Los formularios de ONLYOFFICE facilitan la recopilación de datos estructurados, pero los campos no obligatorios vacíos a menudo pasan desapercibidos. En este artículo, demostramos cómo crear una macro que resalte todos los campos no obligatorios vacíos en un formulario, o solo aquellos que contienen un texto de sugerencia específico.
Creando la macro
1. Obtener los datos del formulario y los objetos en vivo del formulario
La macro comienza accediendo al documento activo mediante Api.GetDocument(). Luego obtenemos dos conjuntos de información:
- Datos del formulario: Usando doc.GetFormsData(), obtenemos una representación JSON de todos los campos del formulario. Este JSON incluye propiedades como key, type, value, tip y si el campo es obligatorio o no.
- Objetos en vivo del formulario: Utilizamos doc.GetAllForms() para recuperar los objetos en vivo correspondientes a estos campos del formulario.
var doc = Api.GetDocument();
var forms = doc.GetAllForms();
var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));
2. Validación opcional basada en sugerencias
A veces es posible que desees revisar solo aquellos campos vacíos que tienen un texto de sugerencia específico. En nuestra macro, puedes activar o desactivar esta función con la variable checkSpecificTip. Por ejemplo, podrías necesitar validar solo los campos cuya sugerencia diga “Por favor, introduzca su segunda dirección.”
// Optional: set to true to check only fields with a specific tip text.
var checkSpecificTip = false;
var requiredTipText = "Please enter your second address"; // Change this as needed.
3. Recorrer cada campo del formulario
La macro luego itera sobre cada campo del formulario en los datos JSON. Nos centramos únicamente en los campos de texto (donde el tipo es “text”). Para cada campo de texto que no está marcado como obligatorio, verificamos si su valor está vacío.
forms.forEach(function(form) {
if (form.GetFormType() === "textForm") {
var key = form.GetFormKey();
var required = form.IsRequired()
// Find corresponding form data by key.
var formData = formsData.find(function(fd) {
return fd.key === key;
});
if (formData) {
// A field is considered empty if its value is missing or only whitespace.
var isEmpty = !formData.value || formData.value.trim() === "";
// Use the live form's GetTip() to get the tip (if available).
var tip = form.GetTipText() ? form.GetTipText() : "";
var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());
if (shouldCheck && isEmpty && !required) {
form.SetBorderColor(0,255,127); // spring green border.
form.SetBackgroundColor(171, 242, 255); // Light blue background.
invalidCount++;
}
}
}
});
- Verificación del valor del campo:
Un campo se considera vacío si su propiedad “value” en el JSON está ausente o contiene solo espacios en blanco. - Filtrado por sugerencia:
Si checkSpecificTip está activado, solo revisamos los campos cuya sugerencia coincida con el texto definido en requiredTipText. - Resaltado:
Para los campos que cumplen con los criterios, encontramos el objeto en vivo correspondiente (coincidiendo con la clave) y le aplicamos un borde de color verde primavera y un fondo azul claro.
4. Registrar los resultados
Finalmente, la macro registra el número total de campos de texto vacíos y no obligatorios que fueron resaltados.
console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
Código completo de la macro
(function () {
// Optional: set to true to check only fields with a specific tip text.
var checkSpecificTip = false;
var requiredTipText = "Please enter your second address"; // Change this as needed.
var doc = Api.GetDocument();
var forms = doc.GetAllForms();
var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));
var invalidCount = 0;
forms.forEach(function(form) {
if (form.GetFormType() === "textForm") {
var key = form.GetFormKey();
var required = form.IsRequired()
// Find corresponding form data by key.
var formData = formsData.find(function(fd) {
return fd.key === key;
});
if (formData) {
// A field is considered empty if its value is missing or only whitespace.
var isEmpty = !formData.value || formData.value.trim() === "";
// Use the live form's GetTip() to get the tip (if available).
var tip = form.GetTipText() ? form.GetTipText() : "";
var shouldCheck = !checkSpecificTip || (checkSpecificTip && tip.trim() === requiredTipText.trim());
if (shouldCheck && isEmpty && !required) {
form.SetBorderColor(0,255,127); // spring green border.
form.SetBackgroundColor(171, 242, 255); // Light blue background.
invalidCount++;
}
}
}
});
console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");
})();
¡Ahora ejecutemos nuestra macro y veamos cómo funciona!
Esta macro detecta y resalta automáticamente los campos de texto vacíos que contienen un texto de sugerencia predefinido, lo cual ahorra tiempo y reduce el trabajo repetitivo. Esperamos que sea útil para optimizar tus formularios en ONLYOFFICE y mejorar la eficiencia general del flujo de trabajo. No dudes en explorar otros potentes métodos de la API de ONLYOFFICE para automatizar y mejorar tu rutina de trabajo con documentos. Si tienes ideas, preguntas o sugerencias para futuras macros, no dudes en contactarnos. Nos encantaría saber de ti.
Sobre el autor
Crea tu cuenta gratuita de ONLYOFFICE
Visualiza, edita y colabora en documentos, hojas, diapositivas, formularios y archivos PDF en línea.