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

回答編集履歴

1

気づいた点を追記

2020/06/09 13:22

投稿

draq
draq

スコア2577

answer CHANGED
@@ -10,4 +10,43 @@
10
10
  for(var i = 0; i < count; i++)
11
11
         ↓
12
12
  for(var i = 1; i <= count; i++)
13
+ ```
14
+ ---
15
+ (追記)
16
+ 改めてコード読んでみると色々おかしいです。
17
+
18
+ ```JavaScript
19
+ var keyWord = sheet_copyFrom.getRange('A2'+':A'+targetRowInput).getValues();
20
+ var keyRank = sheet_copyFrom.getRange('B2'+':B'+targetRowInput).getValues();
21
+ ```
22
+ 上記コードは getValues() の結果なので keyWord も keyRank も2次元配列です。
23
+ 1列だけなので、`[["a"],["b"],["c"],...,["z"]]`のような形になっているはず。
24
+
25
+
26
+ ```JavaScript
27
+ for(var i=0; i < count; i++)
28
+ {
29
+ keyWordValue[i] = keyWord[i];
30
+ keyRankValue[i] = keyRank[i];
31
+ key = keyWordValue[i];
32
+ rank = keyRankValue[i];
33
+ //(以下省略)
34
+ }
35
+ ```
36
+ keyWordValue[i] は i が1以降は undefined になっているはずです。
37
+
38
+ > 日付けの行だけなぜか6個ぐらい多く繰り返されてしまう
39
+
40
+ のもそれが原因でしょう。
41
+
42
+ 以下修正してみたコードです。
43
+ ```JavaScript
44
+ for(let i = 0; i < count; i++)
45
+ {
46
+ key = keyWord[i][0]; //1列のみなので、2次元目のインデックスは常に 0
47
+ rank = keyRank[i][0]; //同上
48
+ sheet_copyTo.getRange(i + 2, 1).setValue(key); //ヘッダー行の1行を考慮して+2
49
+ sheet_copyTo.getRange(i + 2, 2).setValue(copyDate);
50
+ sheet_copyTo.getRange(i + 2, 3).setValue(rank);}
51
+ }
13
52
  ```