如何在 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
我有一个文档,我需要在其中找到一个文本或单词,每次我 运行 一个函数,如果找到一个单词或文本,选择必须转到下一个。如果它在最后,它应该像记事本中的查找选项一样以循环方式将我带到顶部。
有办法吗?
我知道 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