回答編集履歴
3
日本語
test
CHANGED
@@ -1,16 +1,16 @@
|
|
1
|
-
GASの
|
1
|
+
GASの実行速度を上げる方法は、**「スプレッドシートとの通信回数を減らす」** ことです。
|
2
2
|
|
3
3
|
質問者様のコードですと、
|
4
4
|
- 1行ずつ`true / false`を判定し、
|
5
5
|
- 1行ずつ削除していますので、
|
6
6
|
- 例えば200行とも全てtrueだった場合、400回スプレッドシートと通信していることになります。
|
7
|
-
- 例えば
|
7
|
+
- 例えば1行だけがtrueだった場合でも、201回通信しなければなりません。
|
8
8
|
|
9
9
|
今回私のコードは、
|
10
10
|
- 1回の通信で全行の`true / false`判定を行い
|
11
11
|
- 1行ずつ削除していますので、
|
12
12
|
- 例えば200行とも全てtrueだった場合、合計201回スプレッドシートと通信することになります。
|
13
|
-
- 例えば
|
13
|
+
- 例えば1行だけがtrueだった場合、2回の通信だけで済みます。
|
14
14
|
|
15
15
|
200行全部がtrueともなるとそれでも時間はかかりますが、おそらく質問者様のコードよりは速くなるかと思います。
|
16
16
|
|
2
通信回数
test
CHANGED
@@ -4,13 +4,15 @@
|
|
4
4
|
- 1行ずつ`true / false`を判定し、
|
5
5
|
- 1行ずつ削除していますので、
|
6
6
|
- 例えば200行とも全てtrueだった場合、400回スプレッドシートと通信していることになります。
|
7
|
+
- 例えば最終行の200行目の1つだけがtrueだった場合でも、201回通信しなければなりません。
|
7
8
|
|
8
9
|
今回私のコードは、
|
9
10
|
- 1回の通信で全行の`true / false`判定を行い
|
10
11
|
- 1行ずつ削除していますので、
|
11
12
|
- 例えば200行とも全てtrueだった場合、合計201回スプレッドシートと通信することになります。
|
13
|
+
- 例えば最終行の200行目の1つだけがtrueだった場合、2回の通信だけで済みます。
|
12
14
|
|
13
|
-
200行ともなるとそれでも時間はかかりますが、おそらく質問者様のコードよりは速くなるかと思います。
|
15
|
+
200行全部がtrueともなるとそれでも時間はかかりますが、おそらく質問者様のコードよりは速くなるかと思います。
|
14
16
|
|
15
17
|
```javascript
|
16
18
|
function delete_duplication(){
|
1
追記
test
CHANGED
@@ -35,3 +35,11 @@
|
|
35
35
|
});
|
36
36
|
}
|
37
37
|
```
|
38
|
+
|
39
|
+
---
|
40
|
+
|
41
|
+
> 繰り返し構文のforの外に、getRangeを出すと良いという情報を目にしましたが、
|
42
|
+
私が書いたコードはまさにこれです。
|
43
|
+
|
44
|
+
`for()`や`.forEach()`で繰り返し処理を行う前に、
|
45
|
+
`sheet.getRange(A列の5行目〜最終行).getValues()`で全行のチェック状況(`trule / false`)をまとめて取得しています。
|