2016-04-25 1 views
1

私はテキストまたは単語を見つける必要がある文書を持っています。単語またはテキストが見つかった場合、次の選択肢に移動するたびに関数を実行します。それが最後にある場合は、メモ帳でオプションを見つけるのと同じように循環的に上に行くべきです。Google Docsでクローズド検索を行うには?

これを行う方法はありますか?

私は約findText(searchPattern, from)を知っていますが、使用方法は分かりません。

+0

質問はどこですか?これはリクエストのように書式設定されていますが、これはこのコミュニティの性質ではありません。あなたが何かをしようとしている場合、それは動作していません、あなたはそれを修正/デバッグしようとしました。あなたのコード、あなたが受け取ったエラー、あなたが試したものに関する情報を掲示してください。 –

+0

あなたは単にJavascriptの部分文字列関数を使用することができます、あなたの文書とその形式を含めることはできますか? – 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.findTextundefinedを返した場合は、文書の先頭に設定されます。

私はその主題について要点を持っていますhttps://gist.github.com/oshliaer/d468759b3587cfb424348fa722765187

+1

@ user3436029この回答は役に立ちましたか?通常、解決済みとマークされます。 – oshliaer