2017-01-19 6 views
0

ユーザーが現在編集している文章の文字列を取得できます。これは、カーソルを含む文でなければなりません。現在Googleドキュメントにカーソルがある文章はどのように取得できますか?

var cursor = DocumentApp.getActiveDocument().getCursor(); 
var surroundingTextStr = cursor.getSurroundingText().getText(); 

をそして文によって隔離するために、次の正規表現を使用して、それを検索: は今、私は次のようにカーソルの周囲の要素を取得することができます知っています。

var pattern = /([A-Z][^\.!?]*[\.!?])/ig; 
var match; 
while ((match = pattern.exec(surroundingTextStr)) != null){ 
    // How can I check that this sentence currently holds the cursor? 
} 

各文章にカーソルが含まれているかどうか確認するにはどうすればよいですか?文字列が位置情報の多くを取り除くので、周囲のテキストを検索することで知っていますが、その文字列のドキュメントを検索し、RangeElementとCursorの位置を確認できますか?私は「本当に分からない。

おかげ

答えて

1

だから私は答えとしてこれをマークする前に、私は多くのGoogle AppsスクリプトAPIで動作する実装を見ることを好むだろう。これは単に卑劣な回避策です(読み:ここに)カンニング

は、以下の私の働いて実装したものです

var cursor = DocumentApp.getActiveDocument().getCursor(); 
var surroundings = cursor.getSurroundingText(); 
var marker = '\u200B'; // A zero-wdith space character - i.e. a hidden marker. 
cursor.insertText(marker); 
var surroundingTextStr = surroundings.getText(); // Copy to string 
surroundings.replaceText(marker, ''); // Remove the marker from the document. 

// Build sentence pattern, allowing for marker. 
var pattern = /([A-Z\u200B][^\.!?]*[\.!?])/ig; 
var match; 
while ((match = pattern.exec(surroundingTextStr)[0]) != null){ 
    Logger.log(match); 
    if (/\u200B/.test(match)){ 
    match = match.replace(marker, ''); 
    Logger.log("We found the sentence containing the cursor!"); 
    Logger.log(match); 
    } 
} 

APIは、その段落内のカーソルの位置を認識する簡単な方法はありませんので、私が代わりにゼロがどうあるべきかに置いてきました。カーソルによる-width Unicode文字。

このユニコード文字\ u200Bは、マーカーとして機能します。私は、分離のために周囲のテキストを文章にコピーしてから、このマーカを含む文章を見つけます。私がそれを見つけたら、カーソルが置かれていた文が見つかりました!マーカーの文書を必ずクリアしてください。

Positionクラスがある種のインデックス作成や位置を比較する方法を実装していれば、私は大好きです。

関連する問題