0 Вопрос: API Office javascript, получить массив всех символов в выборе

вопрос создан в Thu, May 2, 2019 12:00 AM

Я создаю надстройку для Microsoft Word. Я хочу рандомизировать шрифт каждого символа в диапазоне выбора. Поэтому я сделал небольшой скрипт на javascript для этого.

К сожалению, я получаю ошибку javascript во время выполнения на иностранном языке (рисунок), говоря, что Google переводит как

  

Исключение было сгенерировано в строке 24, столбец 316696 в https : //appsforoffice.microsoft.com/lib/1/hosted/word-win32-11.01.js       0x800a139e - Ошибка времени выполнения JavaScript: атрибут items не доступен. Прежде чем прочитать значение атрибута, вызовите загрузку   метод в объекте-контейнере и вызовите "context.sync ()" в   контекст связанного запроса.

Мой код выглядит следующим образом:

 function ScriptActive() {
        Word.run(function (context) {    

            var thisDocument = context.document        
            var range = thisDocument.getSelection();
            //Look Here :
            var wordRanges = range.getTextRanges([''], false);
            wordRanges.items.forEach(function (char, index) {//Runtime Error Here!
                word.font.size = char.font.size + Math.Random()*4 -2;
            })

            return context.sync().then(function () {
                console.log('Randomized font'); 
            });
        })
            .catch(function (error) {
                console.log('Error: ' + JSON.stringify(error));
                if (error instanceof OfficeExtension.Error) {
                    console.log('Debug info: ' + JSON.stringify(error.debugInfo));
                }
            });
    }

Я хочу, чтобы код выполнял свое предназначение (описано выше) без исключения.

Я попытался найти похожие проблемы в StackOverflow. к сожалению, они либо устарели, либо не решают мою ситуацию.

Visual Studio 2019 (Fresh Install), Microsoft Office 365 (Fresh Install). Бег на локальном хосте.

Если вам нужна дополнительная информация для выявления проблемы, просто оставьте комментарий.

    
0
  1. Сообщение об ошибке сообщает вам, в чем заключается проблема: прежде чем Office JS сможет работать с объектами в документе, они должны быть сначала загружены в память, а затем синхронизированы с помощью context.sync. Если вы посмотрите на примеры кода (посмотрите на тег office-js), вы увидите эту строку и метод Load для объекта хотя бы один раз в примерах кода. Поместите их перед строкой, которая вызывает ошибку (до того, как код использует items).
    2019-05-05 10: 23: 36Z
0 ответов                              0                         
источник размещен Вот