回答編集履歴

1

コードにコメントを追加

2018/08/17 08:16

投稿

hot-lemoned
hot-lemoned

スコア63

test CHANGED
@@ -34,15 +34,15 @@
34
34
 
35
35
  //------テンプレートのスプレッドシートを指定
36
36
 
37
- var template_ssid = "**********";
37
+ var template_ssid = "**********"; //テンプレート用のスプレッドシートID
38
38
 
39
- var template_sheet = SpreadsheetApp.openById(template_ssid).getActiveSheet();
39
+ var template_sheet = SpreadsheetApp.openById(template_ssid).getActiveSheet(); //テンプレートのスプレッドシートの現在のシートを有効(シートは1枚しかないことを想定)
40
40
 
41
41
 
42
42
 
43
- var template_table = template_sheet.getRange(1, 1, template_sheet.getLastRow(), template_sheet.getLastColumn());
43
+ var template_table = template_sheet.getRange(1, 1, template_sheet.getLastRow(), template_sheet.getLastColumn()); //シートの左上から最終行、最終列までの範囲を取得
44
44
 
45
- var template_table_value = template_table.getValues();
45
+ var template_table_value = template_table.getValues(); //範囲の値を取得
46
46
 
47
47
  //Logger.log(template_table_value);
48
48
 
@@ -50,17 +50,17 @@
50
50
 
51
51
 
52
52
 
53
- //------チェック対象のスプレッドシートを指定
53
+ //------生徒用のスプレッドシートを指定
54
54
 
55
- var check_ssid = "**********";
55
+ var check_ssid = "**********"; //生徒用のスプレッドシートID
56
56
 
57
- var check_sheet = SpreadsheetApp.openById(check_ssid).getActiveSheet();
57
+ var check_sheet = SpreadsheetApp.openById(check_ssid).getActiveSheet(); //生徒用のスプレットシートの現在シートを有効(シートは1枚しかないことを想定)
58
58
 
59
59
 
60
60
 
61
- var check_table = check_sheet.getRange(1, 1, check_sheet.getLastRow(), check_sheet.getLastColumn());
61
+ var check_table = check_sheet.getRange(1, 1, check_sheet.getLastRow(), check_sheet.getLastColumn()); //シートの左上から最終行、最終列までの範囲を取得
62
62
 
63
- var check_table_value = check_table.getValues();
63
+ var check_table_value = check_table.getValues(); //範囲の値を取得
64
64
 
65
65
  //Logger.log(check_table_value);
66
66
 
@@ -70,11 +70,13 @@
70
70
 
71
71
 
72
72
 
73
- //------チェック対象のスプレッドシートのを上書き
73
+ //------生徒用のスプレッドシートのセルを上書き
74
74
 
75
75
  var tocopy = [];
76
76
 
77
77
  var t = 0;
78
+
79
+ //テンプレートシートで取得した行数分繰り返し
78
80
 
79
81
  for(var i = 0; template_table_value.length > i; i++){
80
82
 
@@ -82,9 +84,13 @@
82
84
 
83
85
  if(template_table_value[i][0] !== check_table_value[t][0] || template_table_value[i][1] !== check_table_value[t][1]){
84
86
 
87
+ //テンプレートと生徒の分類、回数が同じじゃない場合
88
+
85
89
  tocopy.push(template_table_value[i]);
86
90
 
87
91
  }else{
92
+
93
+ //テンプレートと生徒の分類、回数が同じ場合
88
94
 
89
95
  tocopy.push(check_table_value[t]);
90
96
 
@@ -94,6 +100,8 @@
94
100
 
95
101
  }else{
96
102
 
103
+ //テンプレートシートの方が行が多かった場合
104
+
97
105
  tocopy.push(template_table_value[i]);
98
106
 
99
107
  }
@@ -102,7 +110,7 @@
102
110
 
103
111
  //Logger.log(tocopy);
104
112
 
105
- write_value = check_sheet.getRange(1, 1, tocopy.length, check_sheet.getLastColumn()).setValues(tocopy);
113
+ var write_value = check_sheet.getRange(1, 1, tocopy.length, check_sheet.getLastColumn()).setValues(tocopy); //生徒用スプレッドシートに書き込み
106
114
 
107
115
  //------
108
116
 
@@ -121,3 +129,11 @@
121
129
  書いてから思うのは、自分のコードが柔軟に対応できていないなぁとか思ってしまいますね。。。
122
130
 
123
131
  テンプレートのセル始まりと生徒さんのセル始まりがずれててもうまく動かないですし。 あぁ…
132
+
133
+
134
+
135
+ ---
136
+
137
+ 修正:
138
+
139
+ ・コードにコメントを追加