Remova espaços extras com a macro ONLYOFFICE

4 outubro 2023By Klaibson

No âmbito da edição de texto, uma macro eficiente que remova espaços desnecessários é essencial. Ele aumenta a produtividade e agiliza o fluxo de trabalho. Nesta postagem do blog, orientaremos você na criação de uma macro do ONLYOFFICE projetada para remover espaços excessivos do texto selecionado.

Remova espaços extras com a macro ONLYOFFICE

Construindo a macro

Começamos acessando o documento ativo e capturando o conteúdo selecionado:

const oDocument = Api.GetDocument();
const oRange = oDocument.GetRangeBySelect();
const rawText = oRange.GetText();

Em seguida, excluímos o texto selecionado. Posteriormente, será substituído pelo texto formatado sem espaços extras:

oRange.Delete();

Dividimos o rawText em uma série de parágrafos baseados em caracteres de nova linha. Cada elemento da matriz de parágrafos representa um parágrafo do texto original:

// Split the original word into an array of paragraphs based on newline characters
const paragraphs = rawText.split('\n');

Em seguida, o loop percorre cada parágrafo da matriz de parágrafos e o limpa substituindo os espaços em branco consecutivos por um único espaço. Os parágrafos limpos são armazenados no array cleanParagraphs:

const cleanedParagraphs = [];
// Clean each paragraph and store it in the cleanedParagraphs array
for (const paragraph of paragraphs) {
    // Use a regular expression to replace consecutive whitespaces with a single space
    const cleanedParagraph = paragraph.replace(/\s+/g, ' ');
    cleanedParagraphs.push(cleanedParagraph);
}

Depois de limpar cada parágrafo, usamos o método join(‘\n’) para combinar os parágrafos limpos novamente em uma única string, onde cada parágrafo limpo é separado por um caractere de nova linha (\n). Esta etapa é crucial porque ao inserir texto em um documento, precisamos fornecer uma única string com quebras de parágrafo apropriadas:

// Join the cleaned paragraphs back together with newline characters
const cleanedText = cleanedParagraphs.join('\n');

Por fim, criamos um novo parágrafo (oParagraph) e inserimos o CleanText no documento. Este cleanText contém todos os parágrafos limpos combinados em uma única string, com caracteres de nova linha para preservar a estrutura original do parágrafo:

// Insert the cleanedText with original paragraph structure
const oParagraph = Api.CreateParagraph();
oParagraph.AddText(cleanedText);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });

Todo o código da macro é o seguinte:

(function()
{
 const oDocument = Api.GetDocument();
const oRange = oDocument.GetRangeBySelect();
const rawText = oRange.GetText();
oRange.Delete();

// Split the original word into an array of paragraphs based on newline characters
const paragraphs = rawText.split('\n');

// Create an array to store cleaned paragraphs
const cleanedParagraphs = [];

// Clean each paragraph and store it in the cleanedParagraphs array
for (const paragraph of paragraphs) {
    // Use a regular expression to replace consecutive whitespaces with a single space
    const cleanedParagraph = paragraph.replace(/\s+/g, ' ');
    cleanedParagraphs.push(cleanedParagraph);
}

// Join the cleaned paragraphs back together with newline characters
const cleanedText = cleanedParagraphs.join('\n');

// Insert the cleanedText with original paragraph structure
const oParagraph = Api.CreateParagraph();
oParagraph.AddText(cleanedText);
oDocument.InsertContent([oParagraph], { "KeepTextOnly": true });   
})();

Vamos executar nossa macro e ver como funciona!

Esperamos que esta macro seja um recurso valioso em seu kit de ferramentas, elevando sua produtividade a novos patamares. Com as macros do ONLYOFFICE, você libera o potencial de maior produtividade, dando acesso a soluções eficientes e automatizadas.

Ao se aventurar na criação de macros, não negligencie as possibilidades disponibilizadas pela API ONLYOFFICE. Se você tiver dúvidas ou ideias inovadoras, não hesite em compartilhá-las, seja por meio de comentários ou entrando em contato conosco. Valorizamos sua opinião e estamos entusiasmados com o potencial de colaboração! Boa sorte em seus empreendimentos exploratórios!