Поделиться через


Устранение неполадок Word надстроек

В этой статье рассматриваются проблемы, уникальные для Word. Используйте средство обратной связи в конце страницы, чтобы предложить другие проблемы, которые можно добавить в эту статью.

Все выбранные диапазоны не распознаются

При выборе неконтигентных элементов API Word работает только с последним смежным диапазоном в выделенном фрагменте. Непредвиденный случай заключается в том, что при выборе столбца в таблице и вызове, например Document.getSelection, API возвращает только конечную ячейку в выделенном фрагменте. Хотя выбор столбца кажется непрерывным, API распознает его как неконтигентное выделение (например, ячейка на строку).

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

Заметки не работают

Если API-интерфейсы заметок не работают, возможно, это связано с тем, что вы не используете подписку Microsoft 365. Если вы используете однократную лицензию на покупку, возможно, эти API-интерфейсы не работают для вас.

API-интерфейсы заметок используют службу, требующую подписки На Microsoft 365. Поэтому перед дальнейшей отладкой убедитесь, что надстройка запущена в Word подключена к лицензии на подписку Microsoft 365.

Дополнительные сведения об этой проблеме см. в статье GitHub issue 4953.

Метод Body.insertFileFromBase64 исключает все колонтитулы, которые находились в исходном файле.

Чтобы включить любые колонтитулы из исходного файла, используйте вместо него Document.insertFileFromBase64 .

Не удается использовать mixed для задания свойства

Несколько перечислений в Word предлагают значение Mixed в качестве допустимого значения. Однако значение может в первую очередь возвращаться при получении свойства или вызове API get*. Это связано с тем, что "смешанная" означает, что к текущему выбору применяются несколько параметров. Если вы попытаетесь задать для параметра значение "Mixed", то не будет ясно, какое фактическое значение следует применить к выделенному фрагменту.

Например, предположим, что вы работаете с границами вокруг раздела текста. Для каждой границы можно задать разную ширину. Если верхняя граница — "Pt025" (то есть 0,25 пункта), нижняя граница — "Нет", а левая и правая границы — "Pt050" (то есть 0,50 точек), то при получении ширины границ возвращается значение "Mixed". Если вы хотите изменить ширину границ, вызовите API набора для каждой границы, используя значение перечисления, отличное от mixed.

Это поведение также применяется к значениям перечисления, таким как "Unknown".

Получение generalException при работе со стилями

Если при вызове надстройкой Document.insertFileFromBase64 или API style пользователи получают исключение GeneralException, возможно, эти пользователи превышают ограничения, установленные Word приложением. Дополнительные сведения об этих ограничениях см. в статье Ограничения и спецификации операционных параметров в Word.

Разрывы макета при использовании insertHtml курсора в элементе управления содержимым в заголовке

Эта проблема может возникнуть при выполнении следующих трех условий.

  1. В заголовке и по крайней мере один элемент управления содержимым в нижнем колонтитуле документа Word.
  2. Убедитесь, что курсор находится внутри элемента управления содержимым в заголовке.
  3. Вызовите insertHtml , чтобы задать элемент управления содержимым в нижнем колонтитуле.

Затем нижний колонтитул неожиданно смешивается с верхним колонтитулом. Чтобы избежать этого, очистите элемент управления содержимым в нижнем колонтитуле перед его настройкой, как показано в следующем примере кода.

await Word.run(async (context) => {
    // Credit to https://github.com/barisbikmaz for this version of the workaround.
    // For more information, see https://github.com/OfficeDev/office-js/issues/129.

    // Let's say there are 2 content controls in the header and 1 in the footer.
    const contentControls = context.document.contentControls;
    contentControls.load();

    await context.sync().then(function () {
        // Clear the 2 content controls in the header.
        contentControls.items[0].clear(); 
        contentControls.items[1].clear();

        // Clear the control control in the footer then update it.
        contentControls.items[2].clear();
        contentControls.items[2].insertHtml('<p>New Footer</p>', 'Replace');
    });
});

Потеряно форматирование последнего маркера в списке или последнем абзаце

Если форматирование последнего маркера в списке или последнего абзаца потеряно в указанном тексте или диапазоне, проверка, если вы используете Body.insertFileFromBase64 или Range.insertFileFromBase64. Если это так, обновите код, чтобы вместо этого использовать Document.insertFileFromBase64 .

Значение значений свойств NULL в ответе

nullимеет особые последствия в Word API JavaScript. Он используется для представления значений по умолчанию или отсутствия форматирования.

Свойства форматирования, такие как цвет , будут содержать null значения в ответе, если в указанном диапазоне существуют различные значения. Например, если вы получаете диапазон и загружаете его свойство range.font.color:

  • Если весь текст в диапазоне имеет одинаковый цвет шрифта, range.font.color указывает этот цвет.
  • Если в диапазоне используется несколько цветов шрифтов, свойство range.font.color имеет значение null.

Моя надстройка больше не может найти правильное окно Word

Microsoft Word, как и другие приложения Windows, использует иерархию окон для отображения документов и пользовательского интерфейса для пользователей. Эти окна можно определить с помощью дескрипторов окон или имен классов. Начиная с версии Office 2502 (сборка 18526.20118) одно из окон в иерархии Word было удалено.

Возможно, надстройка Word имеет жесткую зависимость от предыдущей иерархии окон Word и поэтому аварийно завершает работу или перестает работать правильно. Пример проблемы см. в статье Возможно, обновления Приложений Office Microsoft 365 приводят к сбою Word Addin. Рекомендуется, чтобы разработчики не полагались на определенную иерархическую структуру окна. Вместо этого текущее руководство заключается в поиске имени класса окна. Чтобы найти окно Word верхнего уровня, найдите имя класса OpusApp. Чтобы найти окно с открытым документом Word, найдите имя класса "_WwG".

Ниже показан пример предыдущей иерархии Word окна.

Предыдущая Word иерархия окон.

Ниже показан пример новой иерархии окна. Обратите внимание, что промежуточное окно с именем класса "_WwF" больше не присутствует.

Новая иерархия окон Word.

Для проверки иерархии окон приложения можно использовать средство отладки, например Spy++ . Однако имейте в виду, что иерархия может измениться в будущем.

Собственные API JavaScript не работают с Word. Стол

Word. Объект Table отличается от объекта таблицы HTML. Собственные API JavaScript, используемые для взаимодействия с таблицей HTML, не могут использоваться для управления Word. Объект Table. Вместо этого для взаимодействия с Word необходимо использовать API таблиц, доступные в объектной модели Word. Таблица и связанные объекты.

Аналогичным образом не используйте API JavaScript Word для взаимодействия с объектами таблиц HTML.

Дополнительные материалы