Как выполнить некоторую операцию над выделенным текстом документа Word с помощью Office JS API?

#ms-word #office-js #office-web-app

#ms-word #office-js #office-веб-приложение

Вопрос:

Мне нужно получить выделенный текст из документа word и выделить в нем некоторые конкретные слова с помощью Office JavaScript API. Пока я могу получить выделенный текст, но не могу выделить конкретные слова в выделенном тексте.

PS: Я могу выделить текст во всем теле документа, все, что мне нужно сделать, это выделить текст в пределах выбранного диапазона. Вот код для выделения слов во всем документе.

 Word.run(function (context) {
                context.load(context.document.body, 'text')
                return context.sync().then(function () {
                    for (var i = 0; i < item.words.length; i  ) {

                        var searchResults = context.document.body.search(item.words[i], { ignorePunct: true, matchCase: false, matchWholeWord: true });

                        context.load(searchResults, 'font');

                        return context.sync().then(function () {

                            for (var i = 0; i < searchResults.items.length; i  ) {
                                searchResults.items[i].font.color = color;
                                searchResults.items[i].font.highlightColor = "#F0F0F0";
                                searchResults.items[i].font.bold = true;
                            }

                            return context.sync();
                        });
                    }
                });

            })
               .catch(function (error) {
                    console.log('Error: '   JSON.stringify(error));
                    if (error instanceof OfficeExtension.Error) {
                        console.log('Debug info: '   JSON.stringify(error.debugInfo));
                    }
                });
  

Ответ №1:

Вам просто нужно получить диапазон выделенного текста, а затем применить к нему свою логику.

Замените эту строку context.load(context.document.body, 'text') на эти две строки:

 var selectedRange = context.document.getSelection();
context.load(selectedRange, "text");
  

Затем замените context.document.body в 5-й строке на selectedRange .

Комментарии:

1. Большое тебе спасибо, брат :). Пожалуйста, отредактируйте ответ, чтобы он стал полезным без каких-либо проблем. Пожалуйста, напишите context.document. текст только в последней строке.

2. Хороший улов. Исправлено.