Como destacar campos de texto vazios com um texto de dica específico usando uma macro do ONLYOFFICE

28 abril 2025Por Klaibson

Os formulários do ONLYOFFICE facilitam a coleta de informações estruturadas, mas campos vazios e não obrigatórios muitas vezes não são verificados. Nesta publicação do blog, demonstramos como criar uma macro que destaca todos os campos vazios e não obrigatórios em um formulário ou apenas aqueles que contêm um texto de dica específico.

Como destacar campos de texto vazios com um texto de dica específico usando uma macro do ONLYOFFICE

Construindo a macro

1. Recuperar dados de formulário e objetos de formulário ao vivo

A macro começa acessando o documento ativo usando Api.GetDocument(). Em seguida, recuperamos dois conjuntos de informações:

  • Dados de formulários: usando doc.GetFormsData(), obtemos uma representação JSON de todos os campos do formulário. Este JSON inclui propriedades como chave, tipo, valor, dica e se o campo é obrigatório.
  • Objetos de formulário ativos: usamos doc.GetAllForms() para recuperar os objetos ativos correspondentes a esses campos de formulário.
    var doc = Api.GetDocument();
    var forms = doc.GetAllForms();
    var formsData = JSON.parse(JSON.stringify(doc.GetFormsData()));

2. Validação opcional com base na ponta

Às vezes, você pode querer verificar apenas os campos vazios que contêm um texto de dica específico. Em nossa macro, você pode ativar ou desativar esse recurso alternando a variável checkSpecificTip. Por exemplo, você pode precisar validar apenas os campos cuja dica seja “Digite seu segundo endereço”.

   // 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. Faça um loop em cada campo do formulário

A macro então itera sobre cada campo de formulário nos dados JSON. Concentramo-nos apenas nos campos de texto (onde o tipo é “texto”). Para cada campo de texto que não está marcado como obrigatório, verificamos se o seu valor está vazio.

 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++;
                }
            }
        }
    });
  • Verificando valor do campo: Um campo é considerado vazio se sua propriedade JSON “valor” estiver ausente ou somente com espaços em branco.
  • Filtragem de dicas: Se checkSpecificTip estiver habilitado, verificaremos apenas os campos cuja dica corresponde ao requiredTipText.
  • Destaque: Para campos que atendem aos critérios, encontramos o objeto de formulário ativo correspondente (correspondendo à chave) e definimos uma borda verde-primavera e um fundo azul-claro.

4. Registrando os resultados

Por fim, a macro registra o número total de campos de texto vazios e desnecessários que foram destacados.

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

Código de macro completo

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

Agora, vamos executar nossa macro e ver como ela funciona!

Esta macro detecta e destaca automaticamente campos de texto vazios contendo texto de espaço reservado predefinido, economizando tempo e reduzindo o trabalho repetitivo. Esperamos que seja útil para otimizar seus formulários do ONLYOFFICE e melhorar a eficiência geral do fluxo de trabalho. Não hesite em explorar outros métodos poderosos da API do ONLYOFFICE para automatizar e aprimorar sua rotina de documentos. Se você tiver ideias, perguntas ou sugestões para futuras macros, sinta-se à vontade para nos contatar, entre em contato. Adoraríamos ouvir você. Boa programação!

Sobre o author

Como destacar campos de texto vazios com um texto de dica específico usando uma macro do ONLYOFFICE

Crie sua conta gratuita no ONLYOFFICE

Visualize, edite e colabore em documentos, planilhas, slides, formulários e arquivos PDF online.