定位方法

我想先跳转到指定页 在当前页然后使用Search方法进行文本的选中 应该怎么实现呀 谢谢

您好,

先跟您确认一下需求——您是想通过代码(宏/插件)先跳转到指定页,然后在该页选中某段文本,对吗?

如果是的话,可以按以下顺序实现:

js

let doc = Api.GetDocument();
doc.GoToPage(2);              // 跳转到指定页
let ranges = doc.Search("目标文本");
if (ranges.length > 0) ranges[0].Select();   // 选中文本

相关方法:

请确认是否符合您的使用场景。

doc.Search(“目标文本”)中的doc是整篇文档查找的嘛 如何在指定章节查找指定文本呢

是的,doc.Search() 是对整篇文档进行查找的。

方便说明一下您所指的"章节"具体是什么吗?例如是按页、按 Word 的节(Section),还是按标题划分的内容?

按页、按 Word 的节(Section),还是按标题划分的内容 查找的方法分别应该怎么实现呢

您好,

目前没有直接在指定页、节或标题范围内查找的方法——Search() 总是对整篇文档进行查找。这三种情况的思路是一样的:先查找整篇文档,再对返回的结果进行过滤。

js

(function() {
    let doc = Api.GetDocument();
    let ranges = doc.Search("目标文本");

    // 1. 按页过滤(页码从 0 开始:第 1 页 → 0,第 2 页 → 1,……)
    let onPage = ranges.filter(r => r.GetStartPage() === 1);

    // 2. 按节过滤(通过 GetPrevious 计算节的索引)
    function sectionIndex(sec) {
        let i = 0, s = sec.GetPrevious();
        while (s) { i++; s = s.GetPrevious(); }
        return i;
    }
    let inSection = ranges.filter(r =>
        sectionIndex(r.GetParagraph(0).GetSection()) === 1
    );

    // 3. 在两个标题之间查找
    let headings = doc.GetAllHeadingParagraphs();
    let startPos = headings[0].GetPosInParent();
    let endPos   = headings[1].GetPosInParent();
    let inChapter = ranges.filter(r => {
        let p = r.GetParagraph(0).GetPosInParent();
        return p > startPos && p < endPos;
    });

    if (onPage.length > 0) onPage[0].Select();
})();

相关文档: