2016-04-25 84 views
1

我有一个文档,我需要找到一个文本或单词,每当我运行一个函数时,如果找到一个单词或文本,选择必须转到下一个。如果它在最后,它应该像循环记录中的find选项一样以循环的方式让我顶部。如何在Google文档中进行封闭式搜索?

有没有办法做到这一点?我知道findText(searchPattern, from)但我不明白如何使用它。

+0

问题在哪里?这几乎就像一个请求格式化,这不是这个社区的性质。如果你试图做某件事情,它不起作用,并且你试图修复/调试它。发布您的代码,您收到的任何错误,以及您尝试过的信息。 –

+0

你可以简单地使用Javascript substring函数,你可以包含你的文档及其格式吗? – Amir

回答

1

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返回undefined,那么它将设置在文档的顶部。

我有一个主题关于这个问题https://gist.github.com/oshliaer/d468759b3587cfb424348fa722765187

+1

@ user3436029这个答案对您有帮助吗?通常标记为已解决。 – oshliaer