実現したいこと
forループを用いた単純な文字列全置換による英文の浄書を行いたいです。具体的な動作のイメージは以下の通りです。
1:1 Here is an big tree.
1:2 This tree was planted in the time I was born.
1:3 My paternal grandfather planted this tree.
1:4 Today I tell about him.
2:1 He was born in 1921 as the third-eldest son among 9 children.
2:2 The village he raised up was so misery and he couldn't inherit the wealth of his family because there was the custom that the eldest son inherit all wealths in the country he was born.
2:3 Thus he decided to emigrate to The U.S at 18 years old.
↓
Here is an big tree. This tree was planted in the time I was born. My paternal grandfather planted this tree. Today I tell about him.
He was born in 1921 as the third-eldest son among 9 children in the rural village of northeast Japan. The village he raised up was so misery and he couldn't inherit the wealth of his family because there was the custom that the eldest son inherit all wealths in Japan at that time. Thus he decided to emigrate to The U.S at 18 years old.
発生している問題
PCのメモ編集アプリ(Mery)で用いていたJavaScriptのコード(動作確認問題なし)をGASの Googleドキュメントで用いようと移植を試みたところ、GASとGoogleドキュメントの連携がうまくいきません。具体的には、GASで打った文字列置換のコードがGoogleドキュメントに反映されず、ビクともしておりません。
JavaScriptコード(動作は問題なし)
Javascript
1document.selection.SelectAll(); 2 3var paragragh_MAX = 21; 4var sentence_MAX = 21; 5 6for (var i = paragragh_MAX; i>0; i--) { 7 for (var j = sentence_MAX ; j>1; j--) { 8 document.selection.Replace("\n"+i+":"+j,"",meFindReplaceRegExp|meReplaceAll); //(※1) 9 10 } 11} 12 13for (var i = paragragh_MAX; i>0; i--) { 14 document.selection.Replace(i+":1","",meFindReplaceRegExp|meReplaceAll); 15} 16
GASコード(Googleドキュメントで)
GAS
1function myFunction() { 2 3 4 var doc = DocumentApp.openById('特定のドキュメントID'); 5 var body = doc.getBody(); 6 var text = body.getText();//(※2) 7 8 9 var paragragh_MAX = 13; 10 var sentence_MAX = 6; 11 var replacement = ""; 12 13 14 for (var i = paragragh_MAX; i>0; i--) { 15 for (var j = sentence_MAX ; j>1; j--) { 16 var pattern ="\\n"+i+":"+j; 17 var regex = new RegExp(pattern, 'g'); //(※3) 18 var newText = text.replaceText(regex.source, replacement) //(※4) 19 } 20 } 21 // 変更されたテキストをドキュメントに設定 22 body.setText(newText); 23 24} 25
コード上の補足事項
●Javascript
(※1) メソッドはアプリ(Mery)独自のもの。
●GASコード
(※2) Textを取得せずに、replaceを用いた場合、全ての文字列が削除されて、「bodysection」と言った文字列が出るだけとなりました。
(※3) 正規表現を操作するメソッドを用いず、元コード同様""と言う文字列を置換する形式でもできませんでした。
(※4) bodyからTextオブジェクトを取得して、replaceTextを用いる方法を用いても出来ませんでした。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2024/02/06 21:50