Como adicionar comentários a cada instância de uma palavra com macros ONLYOFFICE
Ao trabalhar em documentos, há momentos em que é essencial incluir um comentário para uma palavra específica que aparece repetidamente ao longo do texto. Nesta postagem do blog, mostraremos como você pode adicionar comentários com eficiência a cada instância de uma palavra específica, agilizando seu processo de edição e melhorando a clareza do documento.
Construindo a macro
function addCommentToWord() {
A função addCommentToWord() foi criada para adicionar comentários a cada ocorrência de uma palavra especificada no documento.
Aqui está uma análise de seus principais componentes:
const oDocument = Api.GetDocument();
const numberOfElements = oDocument.GetElementsCount();
Aqui, obtemos o documento atual na variável oDocument. A seguir, obtemos todos os elementos do documento usando o método GetElementsCount().
for (
let elementIndex = 0;
elementIndex < numberOfElements;
elementIndex++
)
Um loop for é usado aqui para iterar por todos os elementos. Isso adiciona um comentário à palavra desejada em cada elemento (parágrafo) do documento.
{
const oElement = oDocument.GetElement(elementIndex);
const rawText = oElement.GetText();
Dentro do loop for, obtemos cada elemento do documento usando o método GetElement e passando o elementIndex. Em seguida, extraímos o texto simples na variável rawText.
const targetWord = "sample word";
let count = 0;
for (let i = 0; i < targetWord.length; i++) {
count++;
}
const wordLength = count - 1;
Definimos a palavra onde queremos que nossos comentários apareçam. A seguir, calculamos o comprimento da palavra usando um loop for e o armazenamos em wordLength.
// Find all occurrences of the target word in the document
const wordRegex = new RegExp("\\b" + targetWord + "\\b", "gi");
Em seguida, uma expressão regular (wordRegex) é criada usando a palavra alvo para localizar todas as ocorrências no documento.
let match;
while ((match = wordRegex.exec(rawText)) !== null) {
let matchPosition = match.index; //returns the index where the word starts.
let nextMatchPosition = matchPosition + wordLength;
// Add a comment at the position of the match
const comment = "YOUR COMMENT GOES HERE";
const oParagraph = oDocument.GetElement(0);
const range = oParagraph.GetRange(matchPosition, nextMatchPosition);
range.AddComment(comment, "Comment's Author Name");
}
}
Aqui, dentro de um loop while, iteramos por todas as instâncias encontradas e armazenadas no wordRegex.
Para cada correspondência, são calculadas a posição inicial da palavra (matchPosition) e a posição do próximo caractere após a palavra (nextMatchPosition).
A variável comment contém o comentário que você deseja inserir. O método AddComment possui um parâmetro opcional que pode ser usado para alterar o nome do autor. Se não quiser usá-lo, você pode excluir o parâmetro opcional e apenas passar a variável comment.
addCommentToWord();
Finalmente, a função addCommentToWord é chamada.
O código de macro completo
Aqui está o código inteiro da macro.
(function () {
function addCommentToWord() {
const oDocument = Api.GetDocument();
const numberOfElements = oDocument.GetElementsCount();
//looping through all the elements in the document.
for (
let elementIndex = 0;
elementIndex < numberOfElements;
elementIndex++
) {
const oElement = oDocument.GetElement(elementIndex);
const rawText = oElement.GetText();
// Specify the target word and the length of the word
const targetWord = "sample word";
let count = 0;
for (let i = 0; i < targetWord.length; i++) {
count++;
}
const wordLength = count - 1;
// Find all occurrences of the target word in the document
const wordRegex = new RegExp("\\b" + targetWord + "\\b", "gi");
let match;
while ((match = wordRegex.exec(rawText)) !== null) {
let matchPosition = match.index; // returns the index where the word starts.
let nextMatchPosition = matchPosition + wordLength; //the index where the word ends.
// Add a comment at the position of the match
const comment = "YOUR COMMENT GOES HERE";
const range = oElement.GetRange(matchPosition, nextMatchPosition);
range.AddComment(comment, "Comment's Author Name");
}
}
}
addCommentToWord();
})();
Agora, vamos ver o desempenho de nossa macro.
Confiamos que esta macro facilitou muito o tratamento de comentários de palavras repetitivas, fornecendo uma ferramenta útil para usuários que lidam com o editor de documentos no ONLYOFFICE.
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!
Crie sua conta gratuita no ONLYOFFICE
Visualize, edite e colabore em documentos, planilhas, slides, formulários e arquivos PDF online.