当范围内有两个超链接时,office.js range.load('text') 不会 return 所有文本

office.js range.load('text') doesn't return all text when there are two many hyperlinks in range

function getBodyText() {
  return Word.run(async context => {
    const range = context.document.body;
    range.load('text')
    await context.sync();
    console.log(range.text);
  });
}

但是当范围内有很多超链接时,range.text只包含范围内的部分文本。

这里是下载 docx 文件的链接,可以重现此错误和执行结果: https://drive.google.com/file/d/13qHZg4hGWxfydq_FbKBeAZoEM5u_k1VL/view?usp=sharing https://drive.google.com/file/d/1bpQh8ArBh_D1w2ZNqZ6Sc-LjTLnl6uRC/view?usp=sharing

不建议您从 document.body 对象中获取整个文本。有一个限制,因此如果正文文本的数量超过限制,您可能无法检索整个文本。相反,您可以通过遍历 paragraphs 集合来实现相同的目标。

  await Word.run(async (context) => {
    const body = context.document.body;
    var paragraph = body.paragraphs.getFirstOrNullObject();
    paragraph.load("text");
    await context.sync();
    while (!paragraph.isNullObject) {
      console.log(paragraph.text);
      paragraph = paragraph.getNextOrNullObject();
      paragraph.load("text");
      await context.sync();
    }
  });

这里是 link 要点,您可以通过 ScriptLab 导入。