automatiza-mg / biblioteca-de-robos

1 stars 2 forks source link

Busca de conteúdo específico em uma tabela HTML #23

Closed kinzinho666 closed 1 day ago

kinzinho666 commented 4 days ago

Problema:

Ação Necessária:

(fig.1) tabela_marcacoes

Solução:

Descrição:

Este script em JavaScript busca por uma tabela específica no DOM, localiza linhas contendo células com a classe linhaDestacadaAdmPC e retorna a primeira data encontrada no formato dd/mm/aaaa. Caso a tabela ou a célula com o formato esperado não sejam encontradas, uma mensagem de erro ou aviso é retornada.


Código


function ExecuteScript() { 
    try {
        // Aguardar até que a tabela exista no DOM
        var tabela = document.querySelector("#page\\:listaAdmissoes\\:j_idt1707\\:gridFiltroListaAdm\\:tabListPesquisaAdmissao\\:table\\:tb");

        if (!tabela) {
            return "Tabela não encontrada.";
        }

        // Seleciona todas as linhas dentro do tbody
        var linhas = tabela.querySelectorAll("tr");

        // Iterar pelas linhas da tabela
        for (var i = 0; i < linhas.length; i++) {
            // Selecionar as células com a classe 'linhaDestacadaAdmPC'
            var celulas = linhas[i].querySelectorAll("td.linhaDestacadaAdmPC");

            // Verificar se há células encontradas
            if (celulas && celulas.length > 0) {
                // Iterar pelas células encontradas
                for (var j = 0; j < celulas.length; j++) {
                    var texto = celulas[j].textContent.trim();

                    // Verifica se a célula contém uma data
                    /*
                     Detalhamento do match:
                     \d: Representa um dígito (de 0 a 9).
                     {2}: Indica que queremos exatamente dois dígitos.
                     \/: O caractere / é o separador na data (dd/mm/aaaa), mas ele precisa ser escapado com \, já que / também é usado para delimitar a regex.
                     {4}: Indica que queremos exatamente quatro dígitos.
                    */
                    if (texto.match(/\d{2}\/\d{2}\/\d{4}/)) {
                        return texto; // Retorna a primeira data encontrada
                    }
                }
            }
        }

        return "Nenhuma célula Sinalizada foi encontrada.";
    } catch (error) {
        return "Erro ao executar script: " + error.message;
    }
}
dudsguedes commented 4 days ago

Obrigada pela resolução, Kin!

Andrelamor commented 1 day ago

@kinzinho666 como vc reproduziu a mesma solução em https://github.com/automatiza-mg/handbook/issues/227, vou fechar este ticket porque este repositório se refere apenas aos robôs publicados na biblioteca do site, ok?