7

Google ドキュメント内の単語のすべてのインスタンスを見つけて、それらを強調表示したいと思います (またはコメント - 目立つように何でもします)。次の関数を作成しましたが、単語の最初の出現 (この場合は "the") しか検出しません。単語のすべてのインスタンスを見つける方法についてのアイデアをいただければ幸いです。

function findWordsAndHighlight() {
var doc = DocumentApp.openById(Id);
var text = doc.editAsText();
//find word "the"
var result = text.findText("the");
//change background color to yellow
result.getElement().asText().setBackgroundColor(result.getStartOffset(),                result.getEndOffsetInclusive(), "#FFFF00");
};
4

4 に答える 4

12

これは古い話ですが、Google Script でテキストに効果を追加する方法を次に示します。以下の例は、ドキュメント内の特定の文字列のすべての出現箇所に強調表示を追加するためのものです。

function highlightText(findMe) {
    var body = DocumentApp.getActiveDocument().getBody();
    var foundElement = body.findText(findMe);

    while (foundElement != null) {
        // Get the text object from the element
        var foundText = foundElement.getElement().asText();

        // Where in the Element is the found text?
        var start = foundElement.getStartOffset();
        var end = foundElement.getEndOffsetInclusive();

        // Change the background color to yellow
        foundText.setBackgroundColor(start, end, "#FCFC00");

        // Find the next match
        foundElement = body.findText(findMe, foundElement);
    }
}
于 2014-10-17T07:05:52.117 に答える
1

わかりましたので、コードをチェーンすると、次のように終了できます。

function findWordsAndHighlight() {
var doc = DocumentApp.openById("DocID");
var text = doc.editAsText();
var search = "searchTerm";
var index = -1;
var color ="#2577ba";
var textLength = search.length-1;

while(true)
 {
   index = text.getText().indexOf(search,index+1);
   if(index == -1)
     break;
   else text.setForegroundColor(index, index+textLength,color );
 }

};

まだ疑問があります。このコードはうまく機能しますが、なぜ search.length-1 を使用する必要があるのでしょうか?

于 2012-12-20T01:19:48.430 に答える
0

さて、単純なJavaScriptで十分です、

var search = searchtext;
var index = -1;

while(true)
 {
   index = text.indexOf(search,index+1);

   if(index == -1)
     break;
   else
     /** do the required operation **/
 }

お役に立てれば!

于 2012-07-14T06:40:13.273 に答える