回答編集履歴

1

気づいた点を追記

2020/06/09 13:22

投稿

draq
draq

スコア2577

test CHANGED
@@ -23,3 +23,81 @@
23
23
  for(var i = 1; i <= count; i++)
24
24
 
25
25
  ```
26
+
27
+ ---
28
+
29
+ (追記)
30
+
31
+ 改めてコード読んでみると色々おかしいです。
32
+
33
+
34
+
35
+ ```JavaScript
36
+
37
+ var keyWord = sheet_copyFrom.getRange('A2'+':A'+targetRowInput).getValues();
38
+
39
+ var keyRank = sheet_copyFrom.getRange('B2'+':B'+targetRowInput).getValues();
40
+
41
+ ```
42
+
43
+ 上記コードは getValues() の結果なので keyWord も keyRank も2次元配列です。
44
+
45
+ 1列だけなので、`[["a"],["b"],["c"],...,["z"]]`のような形になっているはず。
46
+
47
+
48
+
49
+
50
+
51
+ ```JavaScript
52
+
53
+ for(var i=0; i < count; i++)
54
+
55
+ {
56
+
57
+ keyWordValue[i] = keyWord[i];
58
+
59
+ keyRankValue[i] = keyRank[i];
60
+
61
+ key = keyWordValue[i];
62
+
63
+ rank = keyRankValue[i];
64
+
65
+ //(以下省略)
66
+
67
+ }
68
+
69
+ ```
70
+
71
+ keyWordValue[i] は i が1以降は undefined になっているはずです。
72
+
73
+
74
+
75
+ > 日付けの行だけなぜか6個ぐらい多く繰り返されてしまう
76
+
77
+
78
+
79
+ のもそれが原因でしょう。
80
+
81
+
82
+
83
+ 以下修正してみたコードです。
84
+
85
+ ```JavaScript
86
+
87
+ for(let i = 0; i < count; i++)
88
+
89
+ {
90
+
91
+ key = keyWord[i][0]; //1列のみなので、2次元目のインデックスは常に 0
92
+
93
+ rank = keyRank[i][0]; //同上
94
+
95
+ sheet_copyTo.getRange(i + 2, 1).setValue(key); //ヘッダー行の1行を考慮して+2
96
+
97
+ sheet_copyTo.getRange(i + 2, 2).setValue(copyDate);
98
+
99
+ sheet_copyTo.getRange(i + 2, 3).setValue(rank);}
100
+
101
+ }
102
+
103
+ ```