如何在 Google 文档中进行封闭式搜索?

How to make a closed search in Google Docs?

我有一个文档,我需要在其中找到一个文本或单词,每次我 运行 一个函数,如果找到一个单词或文本,选择必须转到下一个。如果它在最后,它应该像记事本中的查找选项一样以循环方式将我带到顶部。

有办法吗?

我知道 findText(searchPattern, from) 但我不知道如何使用它。

DocumentApp 中有多个包装器和 类。他们帮助处理文件的内容。

有必要仔细了解他们负责什么。在您的情况下,下面的代码应该可以正常工作:

function myFunctionDoc() {

    // sets the search pattern
    var searchPattern = '29';

    // works with current document 
    var document = DocumentApp.getActiveDocument();

    // detects selection
    var selection = document.getSelection();

    if (!selection) {
        if (!document.getCursor()) return;
        selection = document.setSelection(document.newRange().addElement(document.getCursor().getElement()).build()).getSelection();
    }
    selection = selection.getRangeElements()[0];

    // searches
    var currentDocument = findNext(document, searchPattern, selection, function(rangeElement) {
        // This is the callback body
        var doc = this;
        var rangeBuilder = doc.newRange();
        if (rangeElement) {
            rangeBuilder.addElement(rangeElement.getElement());
        } else {
            rangeBuilder.addElement(doc.getBody().asText(), 0, 0);
        }
        return doc.setSelection(rangeBuilder.build());
    }.bind(document));

}

// the search engine is implemented on body.findText
function findNext(document, searchPattern, from, callback) {
    var body = document.getBody();
    var rangeElement = body.findText(searchPattern, from);
    return callback(rangeElement);
}

它寻找模式。如果 body.findText returns undefined 则它设置在文档顶部。

我对这个主题有一个要点https://gist.github.com/oshliaer/d468759b3587cfb424348fa722765187