以下は以前質問した時に書いていただいた太字を囲むプログラムを6分を超えても動作するように変えたプログラムです。
これをエディター上で実行すると、2回目までは自動でトリガーが作成されましたが3回目は無効なトリガーとなり作動しなくなりました。
調べたところ、chromeランタイムV8を無効にすれば、できると書いてありましたが、そうするとトリガーはすべて、作動しますが、実行のステータスがずっと実行中さらにログに何も出力されません。デプロイすれば治るという記事も見かけたのですが、デプロイが何を指すか分かりません。右上のデプロイを押して、新規作成すれば完成なのでしょうか?
それとも実行ファイルなどの形にすれば問題ないのでしょうか?それとも以下のコードに問題があるのでしょうか?
GAS
1 2 3function delete_specific_triggers( name_function ){ 4 var all_triggers = ScriptApp.getProjectTriggers(); 5 6 for( var i = 0; i < all_triggers.length; ++i ){ 7 if( all_triggers[i].getHandlerFunction() == name_function ) 8 ScriptApp.deleteTrigger(all_triggers[i]); 9 } 10} 11 12function MarkingBoldWords() { 13 const body = DocumentApp.getActiveDocument().getBody(); 14 15 const text = body.editAsText(); 16 const plainText = text.getText(); 17 var number = Number(PropertiesService.getScriptProperties().getProperty("TEST")); 18 19 var b = 0; 20 var z = 0; 21 if(number+5000<plainText.length){ 22 23 z=number+5000; 24 25 26 } 27 else if (number+5000>plainText.length){ 28 29 z=plainText.length; 30 PropertiesService.getScriptProperties().setProperty("TEST", "0"); 31 delete_specific_triggers("MarkingBoldWords"); 32 } 33 34 35 36 for(i=z; i>=number; i--){ 37 38 39 40 const a = text.isBold(i)? 1:0; 41 42 if(a-b!=0){ 43 const v = plainText.slice(i,i+1)=="\n"? 1:0; 44 45 text.insertText(i+1-a*v,"#"); 46 } 47 b = a 48 } 49 50 var dt = new Date(); 51 dt.setMinutes(dt.getMinutes() + 1); //1分後に再実行 52 ScriptApp.newTrigger('MarkingBoldWords').timeBased().at(dt).create(); 53 var SetNumber=number+1000; 54 PropertiesService.getScriptProperties().setProperty("TEST", String(SetNumber)); 55 Logger.log(PropertiesService.getScriptProperties().getProperty("TEST")); 56 57 58}
あなたの回答
tips
プレビュー