You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用Word JS API在启用修订的文档中搜索接受修订后的文本

解决方案:临时切换修订视图状态搜索最终文本

Office JS的默认搜索会包含文档中显示的修订标记内容(比如已标记删除的文本),要在不修改文档的前提下搜索接受修订后的目标文本,最可靠的方式是临时切换文档的修订视图模式为「最终状态」,搜索完成后再恢复原视图。

实现代码

await Word.run(async (context) => {
  // 保存当前修订视图模式
  const originalMode = context.document.trackedChangesMode;
  originalMode.load("value");
  await context.sync();

  try {
    // 切换到最终状态视图(隐藏删除的修订内容)
    context.document.trackedChangesMode = Word.TrackedChangesMode.final;
    await context.sync();

    const searchString = "This is text with tracked changes accepted.";
    // 执行搜索并选中结果
    const searchRange = context.document.body.search(searchString, {
      ignoreSpace: true,
      matchCase: true,
      ignorePunct: false,
      matchWildcards: false,
    });
    searchRange.select();
    await context.sync();
  } finally {
    // 恢复原视图模式,避免影响用户操作
    context.document.trackedChangesMode = originalMode.value;
    await context.sync();
  }
});

关键说明

  • Word.TrackedChangesMode.final:该模式下Word会渲染接受所有修订后的最终内容,完全隐藏标记删除的文本,和手动切换到「最终状态」视图效果一致。
  • try...finally块确保无论搜索是否成功,都会恢复用户原本的视图模式,不会改变文档的显示状态。

备选方案:通配符匹配(仅适用于已知删除内容场景)

如果无法切换视图,且明确知道删除内容的位置,可以用通配符搜索来兼容带删除标记的文本。比如原文本中「the」被标记删除,可构造通配符搜索字符串:

await Word.run(async (context) => {
  const searchString = "This is *text with tracked changes accepted.";
  const searchRange = context.document.body.search(searchString, {
    ignoreSpace: true,
    matchCase: true,
    ignorePunct: false,
    matchWildcards: true, // 必须开启通配符模式
  });
  searchRange.select();
})

这种方法局限性强,仅适合删除内容固定且已知的场景,通用性远不如视图切换方案。

内容的提问来源于stack exchange,提问作者Joe Donovan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.30 05:50:12