回答編集履歴
1
コードにコメントを追加
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
|
+
・コードにコメントを追加
|