回答編集履歴
2
修正
test
CHANGED
@@ -25,7 +25,7 @@
|
|
25
25
|
↓
|
26
26
|
以下の1行に書き換えます。
|
27
27
|
```js
|
28
|
-
const setdate = toSheet.getRange(targetRow, 3 + r *3, 1, 3).setValues([date, name, cond]);
|
28
|
+
const setdate = toSheet.getRange(targetRow, 3 + r *3, 1, 3).setValues([[date, name, cond]]);
|
29
29
|
// const setname = toSheet.getRange(targetRow, 4 + r *3, 1, 1).setValues(name); // この行は削除
|
30
30
|
// const setcond = toSheet.getRange(targetRow, 5 + r *3, 1, 1).setValues(cond); // この行も削除
|
31
31
|
```
|
1
test
CHANGED
@@ -1,17 +1,20 @@
|
|
1
|
-
<2>
|
1
|
+
**<2>**
|
2
2
|
>「setValuesで配列内の列単位で転記していくコードで記載しましたが、報告1、(入力日、入力者、推移) 報告2、、と行単位で転記していく方法も可能かと思います。」
|
3
3
|
> どちらのアプローチがよいのでしょうか?
|
4
4
|
> その理由も教えて欲しいです。
|
5
|
+
|
6
|
+
仮に、後半の「報告1、(入力日、入力者、推移) 報告2、、と行単位で転記していく方法」というのが
|
7
|
+
「(入力日、入力者、推移)の3つをまとめて **setValues** を使って転記する方法」ということであるならば、そちらを推奨します。
|
8
|
+
|
5
9
|
|
6
|
-
仮に、後半の「報告1、(入力日、入力者、推移) 報告2、、と行単位で転記していく方法」というのが
|
7
|
-
「(入力日、入力者、推移)の3つをまとめて **setValues** を使って転記する方法」ということであるならば、
|
8
|
-
現状のコードよりもその方法をとった方が、setValue(s) の呼び出し回数が少なくなり、高速化を期待できるという点で、推奨します。
|
9
|
-
(現状は個票 1ページだけなので
|
10
|
-
|
10
|
+
+ 理由
|
11
11
|
現状は、入力日、入力者、推移 それぞれを転記する際に1つ1つ setValue() を呼び出しているため、「個票」シートの6行のデータを書き込むのに setValue を18回呼び出しています。
|
12
12
|
仮に setValues で入力日、入力者、推移 をまとめて書き込めば、「個票」シートの6行のデータを書き込むのに setValues を 6 回呼び出すだけで済みます。
|
13
|
+
結果、処理の高速化が期待できます。(現状は個票1ページの転記だけなのでほとんど差は感じられないと思いますが)
|
14
|
+
|
15
|
+
|
13
16
|
|
14
|
-
<3>上記<2>で行単位で転記の場合のコード
|
17
|
+
**<3>上記<2>で行単位で転記の場合のコード**
|
15
18
|
下記のように、 setValues で date、name、cond を配列にしてまとめて書き込みます。
|
16
19
|
具体的には、コード終盤の下の3行を
|
17
20
|
```js
|