Como cortar dados da planilha após uma palavra-chave específica usando a macro ONLYOFFICE

13 junho 2024By Klaibson

No mês passado, desenvolvemos uma macro para excluir palavras específicas quando uma palavra correspondente foi detectada. Nesta postagem do blog, usaremos uma lógica semelhante para criar uma macro que exclui todo o conteúdo de uma célula após uma palavra específica.

Como cortar dados da planilha após uma palavra-chave específica usando a macro ONLYOFFICE

Construindo a macro

    const oWorksheet = Api.GetActiveSheet();
    const oRange = oWorksheet.GetSelection();
    const wordReference = "apple";

Para começar, pegamos a planilha ativa e a seleção nas variáveis ​​oWorksheet e oRange, e definimos a palavra que queremos pesquisar, na variável wordReference.

oRange.ForEach(function (range) {
        const cellValue = oWorksheet.GetRange(range).GetValue().trim();
        const containsIndex = containsWord(cellValue, wordReference);

Em seguida, usando um loop forEach, iteramos pelas células no intervalo selecionado, armazenamos o valor da célula na variável cellValue e passamos o cellValue e a palavra para o método containsWord.

if (containsIndex !== -1) {
            const newValue = cellValue.substring(
                0,
                containsIndex + wordReference.length
            );
            oWorksheet.GetRange(range).SetValue(newValue);
        } else {
            console.log(
                "No instance found in the selection where deletion is applicable."
            );
        }

A condição ‘(containsIndex! == -1)’ verifica a palavra especificada no valor da célula. Se a palavra for encontrada, o valor da célula será atualizado para uma substring do valor original, excluindo essencialmente tudo após a palavra especificada.

    function containsWord(sentence, word) {
        const trimmedSentence = sentence.trim();
        const trimmedWord = word.trim();
        const index = trimmedSentence
            .toLowerCase()
            .indexOf(trimmedWord.toLowerCase());
        return index;
    }

O método containsWord é a função principal desta macro.Leva o valor da célula e a palavra a ser pesquisada como parâmetros. Ele verifica se a palavra está presente na célula, encontrando o índice da palavra no conteúdo da célula. A função returns o índice onde a palavra começa ou ‘-1’ se a palavra não for encontrada.

O código de macro completo

Aqui está todo o código da macro:

(function () {
    const oWorksheet = Api.GetActiveSheet();
    const oRange = oWorksheet.GetSelection();
    const wordReference = "apple";

    oRange.ForEach(function (range) {
        const cellValue = oWorksheet.GetRange(range).GetValue().trim();
        const containsIndex = containsWord(cellValue, wordReference);

        if (containsIndex !== -1) {
            const newValue = cellValue.substring(
                0,
                containsIndex + wordReference.length
            );
            oWorksheet.GetRange(range).SetValue(newValue);
        } else {
            console.log(
                "No instance found in the selection where deletion is applicable."
            );
        }
    });

    function containsWord(sentence, word) {
        const trimmedSentence = sentence.trim();
        const trimmedWord = word.trim();
        const index = trimmedSentence
            .toLowerCase()
            .indexOf(trimmedWord.toLowerCase());
        return index;
    }
})();

Agora, vamos ver nossa macro em ação.

É isso! Esta macro útil foi projetada para cortar valores de células sem muito esforço, aprimorando sua experiência com planilhas. Com suporte para editores de desktop e web, essa macro se torna uma escolha óbvia em seu kit de ferramentas de planilha.

Não perca a chance de aproveitar o poder da API ONLYOFFICE. Nossa extensa biblioteca de métodos API é a chave para transformar suas ideias em realidade. Se você tiver alguma dúvida ou conceitos inovadores, encorajamos você a compartilhar conosco. Sua contribuição é altamente valorizada e estamos entusiasmados com a possibilidade de colaborar com você. Boa sorte em seus empreendimentos exploratórios!