Word JS API 1.4之前版本如何查找、编辑/删除文档链接?
Word JS API 1.4 以下版本处理文档链接的替代方案
核心思路
在1.4要求集之前,无法直接通过fields集合全局操作链接,需结合查找功能与Range对象实现目标——因为Word中的超链接属于可被查找定位的特定内容/样式项。
具体实现方法
1. 查找定位所有超链接
可以通过两种方式匹配文档中的超链接:
- 匹配超链接样式:
const searchResults = context.document.body.find({ matchStyle: "Hyperlink" }); context.load(searchResults, 'items'); await context.sync();
- 匹配超链接字段代码(Word超链接的字段格式为
HYPERLINK "目标地址"):
const searchResults = context.document.body.find({ matchWildcards: true, searchText: 'HYPERLINK "*"' }); context.load(searchResults, 'items'); await context.sync();
2. 编辑超链接
针对找到的每个Range对象,可分别修改显示文本或链接地址:
// 修改超链接显示文本 for (let i = 0; i < searchResults.items.length; i++) { const linkRange = searchResults.items[i]; linkRange.insertText('新的链接文本', 'Replace'); } // 修改超链接目标地址 for (let i = 0; i < searchResults.items.length; i++) { const linkField = searchResults.items[i].fields.getFirst(); const fieldCodeRange = linkField.code; fieldCodeRange.load('text'); await context.sync(); // 替换字段中的原有地址 const newFieldCode = fieldCodeRange.text.replace(/"[^"]+"/, '"https://new-target-url.com"'); fieldCodeRange.insertText(newFieldCode, 'Replace'); } await context.sync();
3. 删除超链接
根据需求选择两种删除方式:
- 完全删除超链接(含文本):
for (let i = 0; i < searchResults.items.length; i++) { searchResults.items[i].delete(); } await context.sync();
- 仅移除链接格式,保留文本内容:
for (let i = 0; i < searchResults.items.length; i++) { const linkField = searchResults.items[i].fields.getFirst(); linkField.result.insertText(linkField.result.text, 'Replace'); linkField.delete(); } await context.sync();
注意事项
- 旧版本中无法全局获取
fields集合,只能通过单个Range对象的fields.getFirst()获取对应超链接字段 - 使用通配符查找时,需确保匹配规则准确,避免误匹配非目标内容
- 操作字段代码时,要熟悉Word超链接字段的完整格式(如带锚点的格式为
HYPERLINK "URL" \l "锚点"),保证替换逻辑正确
内容的提问来源于stack exchange,提问作者Andreas Linnert
相关产品推荐
相关产品推荐

