●やりたい事流れ
同じ日にちごとに処理を流したい
例えば、1月3日の日にちとカテゴリーの表部分をコピペして別の場所で処理
次に1月17日で同様の処理を行う
上記のように日にちが続く限り同様の処理を流したいと思っています。
前回の質問で、列情報を取り出すやり方を教えてもらいました。
https://teratail.com/questions/376991
これを踏まえてコードを書いてみたのですが、同じ日にちごとに処理が回りません。
なぜでしょうか。
あと、日にちが続く限り処理を回す方法も分かりません。
なので、とりあえず”j=10”として、10回分まわるようにしています。
GAS
1function myFunction() { 2 //1. 現在のスプレッドシートを取得 3var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); 4//2. フォームの回答 シートを取得 5var sheet = spreadsheet.getSheetByName('計画書'); 6const lastRow = sheet.getLastRow(); 7var count = 0; 8var count2 = 0; 9for(var j = 0 ; j <= lastRow; ++j) { 10 currentRow = 2 11for(var i = currentRow ; i <= lastRow; ++i) {///////////////////////currentRowを、次の日にちに変更させたい 12 var range1 = sheet.getRange(i, 1); 13 var value1 = range1.getValue(); 14 var range2 = sheet.getRange(i+1, 1); 15 var value2 = range2.getValue(); 16 //ログに出力 17 Logger.log(value1); 18 Logger.log(value2); 19 count++ 20 if ( value1 != value2) 21break; 22} 23 24 25count2++ 26Logger.log("i:"+i); 27Logger.log("count:"+count); 28Logger.log("count2:"+count2); 29 var date = sheet.getRange(i-count+1, 2, count, 5); 30 var sheet2 = spreadsheet.getSheetByName('指示書(サンプル)'); 31 sheet2.copyTo(spreadsheet); 32 var sheet3 = spreadsheet.getSheetByName('指示書(サンプル) のコピー'); 33 sheet3.setName("指示書"+count2); 34 const range_to = sheet3.getRange("A5"); 35 //アクティブなセルに貼付け 36 date.copyTo(range_to, {contentsOnly:true}); 37 38 var cell = sheet3.getRange("A2:F10"); 39 cell.setHorizontalAlignment("center"); 40 cell.setVerticalAlignment("middle"); 41 42 43}} 44
助言ですが、まずインデントを正しく整形するべきです。
あと「日にちが続く」「同じ日にち」といった言葉の意味が私にはよくわかりません。違う言葉で説明できますか?
回答1件
あなたの回答
tips
プレビュー