teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

コードにコメントを追加

2018/08/17 08:16

投稿

hot-lemoned
hot-lemoned

スコア63

answer CHANGED
@@ -16,41 +16,45 @@
16
16
  Logger.log("--開始--");
17
17
 
18
18
  //------テンプレートのスプレッドシートを指定
19
- var template_ssid = "**********";
19
+ var template_ssid = "**********"; //テンプレート用のスプレッドシートID
20
- var template_sheet = SpreadsheetApp.openById(template_ssid).getActiveSheet();
20
+ var template_sheet = SpreadsheetApp.openById(template_ssid).getActiveSheet(); //テンプレートのスプレッドシートの現在のシートを有効(シートは1枚しかないことを想定)
21
21
 
22
- var template_table = template_sheet.getRange(1, 1, template_sheet.getLastRow(), template_sheet.getLastColumn());
22
+ var template_table = template_sheet.getRange(1, 1, template_sheet.getLastRow(), template_sheet.getLastColumn()); //シートの左上から最終行、最終列までの範囲を取得
23
- var template_table_value = template_table.getValues();
23
+ var template_table_value = template_table.getValues(); //範囲の値を取得
24
24
  //Logger.log(template_table_value);
25
25
  //------
26
26
 
27
- //------チェック対象のスプレッドシートを指定
27
+ //------生徒用のスプレッドシートを指定
28
- var check_ssid = "**********";
28
+ var check_ssid = "**********"; //生徒用のスプレッドシートID
29
- var check_sheet = SpreadsheetApp.openById(check_ssid).getActiveSheet();
29
+ var check_sheet = SpreadsheetApp.openById(check_ssid).getActiveSheet(); //生徒用のスプレットシートの現在シートを有効(シートは1枚しかないことを想定)
30
30
 
31
- var check_table = check_sheet.getRange(1, 1, check_sheet.getLastRow(), check_sheet.getLastColumn());
31
+ var check_table = check_sheet.getRange(1, 1, check_sheet.getLastRow(), check_sheet.getLastColumn()); //シートの左上から最終行、最終列までの範囲を取得
32
- var check_table_value = check_table.getValues();
32
+ var check_table_value = check_table.getValues(); //範囲の値を取得
33
33
  //Logger.log(check_table_value);
34
34
  //------
35
35
 
36
36
 
37
- //------チェック対象のスプレッドシートのを上書き
37
+ //------生徒用のスプレッドシートのセルを上書き
38
38
  var tocopy = [];
39
39
  var t = 0;
40
+ //テンプレートシートで取得した行数分繰り返し
40
41
  for(var i = 0; template_table_value.length > i; i++){
41
42
  if(t < check_table_value.length){
42
43
  if(template_table_value[i][0] !== check_table_value[t][0] || template_table_value[i][1] !== check_table_value[t][1]){
44
+ //テンプレートと生徒の分類、回数が同じじゃない場合
43
45
  tocopy.push(template_table_value[i]);
44
46
  }else{
47
+ //テンプレートと生徒の分類、回数が同じ場合
45
48
  tocopy.push(check_table_value[t]);
46
49
  t++;
47
50
  }
48
51
  }else{
52
+ //テンプレートシートの方が行が多かった場合
49
53
  tocopy.push(template_table_value[i]);
50
54
  }
51
55
  }
52
56
  //Logger.log(tocopy);
53
- write_value = check_sheet.getRange(1, 1, tocopy.length, check_sheet.getLastColumn()).setValues(tocopy);
57
+ var write_value = check_sheet.getRange(1, 1, tocopy.length, check_sheet.getLastColumn()).setValues(tocopy); //生徒用スプレッドシートに書き込み
54
58
  //------
55
59
 
56
60
  Logger.log("--終了--");
@@ -59,4 +63,8 @@
59
63
 
60
64
 
61
65
  書いてから思うのは、自分のコードが柔軟に対応できていないなぁとか思ってしまいますね。。。
62
- テンプレートのセル始まりと生徒さんのセル始まりがずれててもうまく動かないですし。 あぁ…
66
+ テンプレートのセル始まりと生徒さんのセル始まりがずれててもうまく動かないですし。 あぁ…
67
+
68
+ ---
69
+ 修正:
70
+ ・コードにコメントを追加