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

質問編集履歴

11

データの変更をおこないました。

2021/01/14 00:08

投稿

Nihsi2407
Nihsi2407

スコア5

title CHANGED
File without changes
body CHANGED
@@ -10,13 +10,13 @@
10
10
 
11
11
  ```GAS
12
12
  function 勤怠() {
13
- var sheet1 = SpreadsheetApp.openById('1tIjXivR9bVB0_7edrBhtv9z7lKI5zuz7bEPa_kawP_w');// 【つくば2】入出庫_シフト
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部');//【つくば2】入出庫_10月シフ
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

タグを追加しました。

2021/01/14 00:08

投稿

Nihsi2407
Nihsi2407

スコア5

title CHANGED
File without changes
body CHANGED
File without changes

9

コード自体は動くのですが、処理速度が遅いです。

2021/01/10 04:31

投稿

Nihsi2407
Nihsi2407

スコア5

title CHANGED
@@ -1,1 +1,1 @@
1
- GASの配列を使用して文字入力
1
+ GASの配列を使用して文字入力する速度を速めたい
body CHANGED
@@ -1,15 +1,13 @@
1
1
  ### 前提・実現したいこと
2
- TRUE判定が下った時のみ、該当のセル1つに欠勤の文字入力たい
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("A1").getValues();
24
+ var ary3 = sh1.getRange("A6:A32")
27
- var ary4 = sh1.getRange("A3").getValues();
28
- for(let j = 0; j < ary1.length ;j++){
25
+ for(let j = 0; j < ary2.length ;j++){
29
- ary3[0][0]=ary2[j][0]
26
+ var KEY=ary2[j][0]
30
- sh1.getRange("A1").setValues(ary3)
27
+ if (ary3.createTextFinder(KEY).findNext()) {
31
- if(ary4[0][0]=="TRUE"){
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

タグを追加しました。

2021/01/08 11:31

投稿

Nihsi2407
Nihsi2407

スコア5

title CHANGED
File without changes
body CHANGED
File without changes

7

修正いたしました。

2021/01/08 00:37

投稿

Nihsi2407
Nihsi2407

スコア5

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

コードの一部を修正致しました。

2021/01/08 00:08

投稿

Nihsi2407
Nihsi2407

スコア5

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

セル上の式と役割に関して記載いたしました。

2021/01/08 00:07

投稿

Nihsi2407
Nihsi2407

スコア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のTRUEの判定を下すセルに関してはセル上に数式直接入力して判定をくだしてます
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
- ※A3の式:=A1=A2 こちらがイコールで結ばれるとA3にTRUEが入る仕組みです。
54
+ こちらがイコールで結ばれるとA3にTRUEが入る

4

セルA3の数式の仕組みを記載しました。

2021/01/08 00:04

投稿

Nihsi2407
Nihsi2407

スコア5

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

タグを追加しました。

2021/01/07 23:49

投稿

Nihsi2407
Nihsi2407

スコア5

title CHANGED
File without changes
body CHANGED
File without changes

2

コードの挿入にて挿入させて頂きました。どうぞ、よろしくお願い致します。

2021/01/07 09:28

投稿

Nihsi2407
Nihsi2407

スコア5

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でのプログラムとなります。

2021/01/06 11:39

投稿

Nihsi2407
Nihsi2407

スコア5

title CHANGED
@@ -1,1 +1,1 @@
1
- 配列を使用して文字入力
1
+ GASの配列を使用して文字入力
body CHANGED
File without changes