排查Word加载项问题

本文讨论Word特有的故障排除问题。 使用页面末尾的反馈工具建议可添加到本文的其他问题。

无法识别所有选定的区域

如果进行了非连续选择,Word API 仅在所选内容中的最后一个连续范围上运行。 这种情况的一个意外情况是,选择表中的列,然后调用 Document.getSelection,API 仅返回所选内容中的最后一个单元格。 尽管列的选择看起来是连续的,但 API 会将其识别为非连续选择 (例如,每行的单元格) 。

若要详细了解如何进行非连续选择,请参阅 如何选择彼此不相邻的项目

根据设计, Body.insertFileFromBase64 方法排除源文件中的任何页眉或页脚。

若要包含源文件中的任何页眉或页脚,请改用 Document.insertFileFromBase64

使用样式时获取 GeneralException

如果用户在外接程序调用 Document.insertFileFromBase64 或 Style API 时遇到 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.insertFileFromBase64Range.insertFileFromBase64。 如果是这样,请更新代码以改用 Document.insertFileFromBase64

响应中 null 属性值的含义

nullWord JavaScript API 中具有特殊含义。 它用于表示默认值或无格式。

当指定区域中存在不同的值时,格式设置属性(如颜色)将包含null响应中的值。 例如,如果你检索某个区域并加载其 range.font.color 属性:

  • 如果区域中的所有文本具有相同的字体颜色, range.font.color 则指定该颜色。
  • 如果该区域内存在多种字体颜色,则 range.font.colornull

另请参阅