Kako naglasiti prazna tekstualna polja sa specifičnim savetom koristeći ONLYOFFICE makro

24 April 2025By Sara Bogavac

ONLYOFFICE obrasci olakšavaju prikupljanje strukturiranih unosa, ali prazna polja koja nisu obavezna često ostaju neproverena. U ovom blog postu, demonstriraćemo kako da izgradimo makro koji ističe ili sva prazna neobavezna polja u obrascu ili samo ona koja sadrže specifičan tekst kao savet.

Kako naglasiti prazna tekstualna polja sa specifičnim savetom koristeći ONLYOFFICE makro

Izgradnja makroa

1. Preuzmi podatke iz forme i žive objekte forme

Makro počinje pristupanjem aktivnom dokumentu korišćenjem Api.GetDocument(). Potom prikupljamo dva seta informacija:

  • Oblikovanje podataka: Koristeći doc.GetFormsData(), dobijamo JSON reprezentaciju svih polja forme. Ovaj JSON uključuje svojstva kao što su ključ, tip, vrednost, savet i da li je polje obavezno.
  • Živi objekti formi: Koristimo doc.GetAllForms() da bismo dobili žive objekte koji odgovaraju ovim poljima forme.
    var doc = Api.GetDocument();
    var forms = doc.GetAllForms();
    var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));

2. Opciona validacija zasnovana na savetima

Ponekad ćete možda želeti da proverite samo ona prazna polja koja imaju određeni tekst saveta. U našem makrou možete omogućiti ili onemogućiti ovu funkciju tako što ćete prebaciti promenljivu checkSpecificTip. Na primer, možda ćete morati da potvrdite samo polja čiji savet glasi “Unesite svoju drugu adresu”.

   // 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. Prođite kroz svako polje forme

Makro zatim ponavlja svako polje obrasca u JSON podacima. Fokusiramo se samo na polja tekstualnog obrasca (gde je tip “tekst”). Za svako tekstualno polje koje nije označeno kao obavezno, proveravamo da li je njegova vrednost prazna.

 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++;
                }
            }
        }
    });
  • Provera vrednosti polja:
    Polje se smatra praznim ako nedostaje njegova JSON “vrednost” osobina ili samo razmak.
  • Filtriranje saveta:
    Ako je checkSpecificTip omogućen, proveravamo samo polja čiji saveti odgovaraju requiredTipText.
  • Isticanje:
    Za polja koja ispunjavaju kriterijume, pronalazimo odgovarajući objekat živog oblika (povezivanjem ključa) i postavljamo prolećno zelenu ivicu i svetloplavu pozadinu.

4. Prijavljivanje rezultata

Na kraju, makro beleži ukupni broj praznih nepotrebnih tekstualnih polja koja su istaknuta.

console.log("Form Field Validator complete. " + invalidCount + " empty unrequired text field(s) highlighted.");

Potpun makro kod

(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.");
})();

Sada, hajde da pokrenemo naš makro i vidimo kako to funkcioniše!

Ova makro funkcija automatski otkriva i označava prazna tekstualna polja koja sadrže unapred definisani tekst kao oznaku, čime se štedi vreme i smanjuje ponavljajući rad. Nadamo se da će vam biti od pomoći u optimizaciji vaših ONLYOFFICE obrazaca i poboljšanju ukupne efikasnosti radnog toka. Ne oklevajte da istražite druge moćne metode ONLYOFFICE API-ja za automatizaciju i unapređenje vaše rutine sa dokumentima. Ako imate ideje, pitanja ili sugestije za buduće makroe, slobodno nas kontaktirajte. Biće nam drago da vas čujemo. Srećno sa kodiranjem!

O autoru

How to highlight empty text fields with a specific tip text using an ONLYOFFICE macro

Create your free ONLYOFFICE account

View, edit and collaborate on docs, sheets, slides, forms, and PDF files online.