質問編集履歴
11
データの変更をおこないました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,13 +10,13 @@
|
|
10
10
|
|
11
11
|
```GAS
|
12
12
|
function 勤怠() {
|
13
|
-
var sheet1 = SpreadsheetApp.openById('
|
13
|
+
var sheet1 = SpreadsheetApp.openById('*********');
|
14
14
|
var date = new Date(); //現在日時のDateオブジェクトを作る
|
15
15
|
var day = date.getDate();//現在の「日」を取得
|
16
16
|
date.setDate(day+1);//前日日付にしたいので-1する
|
17
17
|
var yesterday = Utilities.formatDate(date, 'JST', 'MM');//日付の表示形式を整形する
|
18
18
|
var sh1 = sheet1.getSheetByName("勤怠");
|
19
|
-
var sh5 = sheet1.getSheetByName(yesterday + '月1部');//【
|
19
|
+
var sh5 = sheet1.getSheetByName(yesterday + '月1部');//【ト
|
20
20
|
var col = sh5.getRange(7,3).getValues();
|
21
21
|
var i = sh5.getRange(sh5.getMaxRows(), 5).getNextDataCell(SpreadsheetApp.Direction.UP).getRow()
|
22
22
|
var ary1 = sh5.getRange(10,col,i,1).getValues();
|
10
タグを追加しました。
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
9
コード自体は動くのですが、処理速度が遅いです。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
GASの配列を使用して文字入力
|
1
|
+
GASの配列を使用して文字入力する速度を速めたい
|
body
CHANGED
@@ -1,15 +1,13 @@
|
|
1
1
|
### 前提・実現したいこと
|
2
|
-
|
2
|
+
GASの配列を使用して文字入力する速度を速めたい
|
3
3
|
|
4
|
-
|
5
4
|
### 発生している問題・エラーメッセージ
|
6
5
|
|
7
6
|
以下のコードで上記に記載の内容を実現したいのですが、
|
8
|
-
|
7
|
+
処理速度が遅く、現場で使用できるレベルではありません。
|
9
8
|
|
10
9
|
### 該当のソースコード
|
11
10
|
|
12
|
-
```ここに言語を入力
|
13
11
|
```GAS
|
14
12
|
function 勤怠() {
|
15
13
|
var sheet1 = SpreadsheetApp.openById('1tIjXivR9bVB0_7edrBhtv9z7lKI5zuz7bEPa_kawP_w');// 【つくば2】入出庫_シフト
|
@@ -23,31 +21,21 @@
|
|
23
21
|
var i = sh5.getRange(sh5.getMaxRows(), 5).getNextDataCell(SpreadsheetApp.Direction.UP).getRow()
|
24
22
|
var ary1 = sh5.getRange(10,col,i,1).getValues();
|
25
23
|
var ary2 = sh5.getRange(10,6,i,1).getValues();
|
26
|
-
var ary3 = sh1.getRange("
|
24
|
+
var ary3 = sh1.getRange("A6:A32")
|
27
|
-
var ary4 = sh1.getRange("A3").getValues();
|
28
|
-
for(let j = 0; j <
|
25
|
+
for(let j = 0; j < ary2.length ;j++){
|
29
|
-
|
26
|
+
var KEY=ary2[j][0]
|
30
|
-
|
27
|
+
if (ary3.createTextFinder(KEY).findNext()) {
|
31
|
-
|
28
|
+
Logger.log("存在します!");
|
32
29
|
ary1[j][0]="欠勤"
|
33
|
-
sh5.getRange(10+j,col).setValue(ary1);
|
30
|
+
sh5.getRange(10+j,col).setValue(ary1);
|
34
31
|
}
|
32
|
+
}
|
35
33
|
}
|
36
|
-
}
|
37
|
-
|
38
34
|
```
|
35
|
+
|
39
36
|
|
40
37
|
### 試したこと
|
41
38
|
|
42
39
|
ここに問題に対して試したことを記載してください。
|
43
40
|
|
44
|
-
### 補足情報(FW/ツールのバージョンなど)
|
41
|
+
### 補足情報(FW/ツールのバージョンなど)
|
45
|
-
|
46
|
-
尚、A1、A2、A3内のセル上の式や役割に関しては以下をご確認下さい。
|
47
|
-
※A1の役割:シフト上から名前をとってきてfor文で回して1人づつ記載する
|
48
|
-
|
49
|
-
※A2の式:=QUERY(A6:A32,"Where A='"&A1&"'")
|
50
|
-
⇒A1セルに出た名前がA6~A32にあれば同様の名前を返す
|
51
|
-
|
52
|
-
※A3の式:=A1=A2
|
53
|
-
⇒こちらがイコールで結ばれるとA3にTRUEが入る
|
8
タグを追加しました。
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
7
修正いたしました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
|
10
10
|
### 該当のソースコード
|
11
11
|
|
12
|
+
```ここに言語を入力
|
12
13
|
```GAS
|
13
14
|
function 勤怠() {
|
14
15
|
var sheet1 = SpreadsheetApp.openById('1tIjXivR9bVB0_7edrBhtv9z7lKI5zuz7bEPa_kawP_w');// 【つくば2】入出庫_シフト
|
@@ -34,6 +35,7 @@
|
|
34
35
|
}
|
35
36
|
}
|
36
37
|
|
38
|
+
```
|
37
39
|
|
38
40
|
### 試したこと
|
39
41
|
|
6
コードの一部を修正致しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -27,16 +27,13 @@
|
|
27
27
|
for(let j = 0; j < ary1.length ;j++){
|
28
28
|
ary3[0][0]=ary2[j][0]
|
29
29
|
sh1.getRange("A1").setValues(ary3)
|
30
|
-
if(ary4[0][0]="TRUE"){
|
30
|
+
if(ary4[0][0]=="TRUE"){
|
31
31
|
ary1[j][0]="欠勤"
|
32
32
|
sh5.getRange(10+j,col).setValue(ary1);
|
33
33
|
}
|
34
34
|
}
|
35
35
|
}
|
36
|
-
```
|
37
|
-
```
|
38
36
|
|
39
|
-
```
|
40
37
|
|
41
38
|
### 試したこと
|
42
39
|
|
5
セル上の式と役割に関して記載いたしました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,15 +9,15 @@
|
|
9
9
|
|
10
10
|
### 該当のソースコード
|
11
11
|
|
12
|
-
```
|
12
|
+
```GAS
|
13
13
|
function 勤怠() {
|
14
|
-
var sheet1 = SpreadsheetApp.openById('
|
14
|
+
var sheet1 = SpreadsheetApp.openById('1tIjXivR9bVB0_7edrBhtv9z7lKI5zuz7bEPa_kawP_w');// 【つくば2】入出庫_シフト
|
15
|
-
var date = new Date(); //
|
15
|
+
var date = new Date(); //現在日時のDateオブジェクトを作る
|
16
|
-
var day = date.getDate();//
|
16
|
+
var day = date.getDate();//現在の「日」を取得
|
17
17
|
date.setDate(day+1);//前日日付にしたいので-1する
|
18
|
-
var yesterday = Utilities.formatDate(date, 'JST', 'MM');//
|
18
|
+
var yesterday = Utilities.formatDate(date, 'JST', 'MM');//日付の表示形式を整形する
|
19
19
|
var sh1 = sheet1.getSheetByName("勤怠");
|
20
|
-
var sh5 = sheet1.getSheetByName(yesterday + '月1部');//
|
20
|
+
var sh5 = sheet1.getSheetByName(yesterday + '月1部');//【つくば2】入出庫_10月シフト
|
21
21
|
var col = sh5.getRange(7,3).getValues();
|
22
22
|
var i = sh5.getRange(sh5.getMaxRows(), 5).getNextDataCell(SpreadsheetApp.Direction.UP).getRow()
|
23
23
|
var ary1 = sh5.getRange(10,col,i,1).getValues();
|
@@ -27,12 +27,14 @@
|
|
27
27
|
for(let j = 0; j < ary1.length ;j++){
|
28
28
|
ary3[0][0]=ary2[j][0]
|
29
29
|
sh1.getRange("A1").setValues(ary3)
|
30
|
-
if(ary4="TRUE"){
|
30
|
+
if(ary4[0][0]="TRUE"){
|
31
|
-
ary1[j]
|
31
|
+
ary1[j][0]="欠勤"
|
32
32
|
sh5.getRange(10+j,col).setValue(ary1);
|
33
33
|
}
|
34
34
|
}
|
35
35
|
}
|
36
|
+
```
|
37
|
+
```
|
36
38
|
|
37
39
|
```
|
38
40
|
|
@@ -42,5 +44,11 @@
|
|
42
44
|
|
43
45
|
### 補足情報(FW/ツールのバージョンなど)
|
44
46
|
|
45
|
-
尚、A3の
|
47
|
+
尚、A1、A2、A3内のセル上の式や役割に関しては以下をご確認下さい。
|
48
|
+
※A1の役割:シフト上から名前をとってきてfor文で回して1人づつ記載する
|
49
|
+
|
50
|
+
※A2の式:=QUERY(A6:A32,"Where A='"&A1&"'")
|
51
|
+
⇒A1セルに出た名前がA6~A32にあれば同様の名前を返す
|
52
|
+
|
53
|
+
※A3の式:=A1=A2
|
46
|
-
|
54
|
+
⇒こちらがイコールで結ばれるとA3にTRUEが入る
|
4
セルA3の数式の仕組みを記載しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -42,4 +42,5 @@
|
|
42
42
|
|
43
43
|
### 補足情報(FW/ツールのバージョンなど)
|
44
44
|
|
45
|
-
尚、TRUEの判定を下すセルに関してはセル上に数式を直接入力して判定をくだしています。
|
45
|
+
尚、A3のTRUEの判定を下すセルに関してはセル上に数式を直接入力して判定をくだしています。
|
46
|
+
※A3の式:=A1=A2 こちらがイコールで結ばれるとA3にTRUEが入る仕組みです。
|
3
タグを追加しました。
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
2
コードの挿入にて挿入させて頂きました。どうぞ、よろしくお願い致します。
title
CHANGED
File without changes
|
body
CHANGED
@@ -9,6 +9,7 @@
|
|
9
9
|
|
10
10
|
### 該当のソースコード
|
11
11
|
|
12
|
+
```ここに言語を入力
|
12
13
|
function 勤怠() {
|
13
14
|
var sheet1 = SpreadsheetApp.openById('*************************');//
|
14
15
|
var date = new Date(); //
|
@@ -33,6 +34,7 @@
|
|
33
34
|
}
|
34
35
|
}
|
35
36
|
|
37
|
+
```
|
36
38
|
|
37
39
|
### 試したこと
|
38
40
|
|
1
言語の記載がありませんでしたが、こちらGASでのプログラムとなります。
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
配列を使用して文字入力
|
1
|
+
GASの配列を使用して文字入力
|
body
CHANGED
File without changes
|