回答編集履歴
2
2日より前の日付で判定するように変更
answer
CHANGED
@@ -1,43 +1,26 @@
|
|
1
|
-
|
1
|
+
2日より前の日付で判定するように変更
|
2
2
|
```ここに言語を入力
|
3
|
-
function
|
3
|
+
function HideRows2dayBefore() {
|
4
4
|
|
5
5
|
const ss = SpreadsheetApp.getActiveSpreadsheet();
|
6
6
|
const s = ss.getSheetByName('シート1'); // シート名で指定
|
7
|
-
const values = s.getRange('E:E').getDisplayValues().flat(); //E列に日付けが入っているので、表示値を配列で取得。
|
8
|
-
|
9
|
-
var dt = new Date(); //現在の日時を取得
|
10
|
-
|
7
|
+
const lastRow = s.getLastRow();
|
11
|
-
var d2 = Utilities.formatDate(dt, 'Asia/Tokyo', 'yyyy/MM/dd'); //2日前の日付に
|
12
|
-
|
13
|
-
//後続でIndexOfするので、それぞれ文字列にする。
|
14
|
-
const arrayDateToString = values.map(String);
|
15
|
-
|
16
|
-
//一昨日の日付のindexを取得
|
17
|
-
const indexOf2DaysBefore = arrayDateToString.indexOf(d2);
|
18
|
-
|
19
|
-
//1行目から一昨日までの行を非表示する。
|
20
|
-
s.hideRows(1, indexOf2DaysBefore);
|
21
|
-
}
|
22
|
-
```
|
23
|
-
元々のコードを使った場合
|
24
|
-
```ここに言語を入力
|
25
|
-
function HideRowsBeforeToday() {
|
26
|
-
|
27
|
-
const ss = SpreadsheetApp.getActiveSpreadsheet();
|
28
|
-
const s = ss.getSheetByName('シート1'); // シート名で指定
|
29
|
-
const values = s.getRange(
|
8
|
+
const values = s.getRange(1,5,lastRow,1).getValues(); //E列に日付けが入っているので、入力がある最終行まで配列で取得。
|
30
9
|
const dt = new Date(new Date().setHours(0, 0, 0, 0)); //本日の0時の日付を作成
|
31
10
|
dt.setDate(dt.getDate()-2); //日付を-2
|
11
|
+
var hiderow = 0 //非表示にする行
|
32
12
|
|
33
|
-
//後続でIndexOfするので、それぞれ文字列にする。
|
34
|
-
|
13
|
+
for (let i = 0 ; i < values.length ; i++) {
|
35
|
-
|
14
|
+
if(values[i][0] > dt){ //2日前の日付とセルの日付を比較
|
15
|
+
hiderow = i //2日前でないセルの行番号を取得
|
16
|
+
break;
|
17
|
+
}
|
18
|
+
};
|
36
19
|
|
20
|
+
if (hiderow >= 1){
|
21
|
+
s.hideRows(1, hiderow); //1行目から取得した行までを非表示する。
|
22
|
+
}else{
|
37
|
-
|
23
|
+
//行が見つからなかった場合の処理
|
38
|
-
const indexOf2DaysBefore = arrayDateToString.indexOf(dayToString);
|
39
|
-
|
40
|
-
|
24
|
+
}
|
41
|
-
s.hideRows(1, indexOf2DaysBefore);
|
42
25
|
}
|
43
26
|
```
|
1
コード追加
answer
CHANGED
@@ -19,4 +19,25 @@
|
|
19
19
|
//1行目から一昨日までの行を非表示する。
|
20
20
|
s.hideRows(1, indexOf2DaysBefore);
|
21
21
|
}
|
22
|
+
```
|
23
|
+
元々のコードを使った場合
|
24
|
+
```ここに言語を入力
|
25
|
+
function HideRowsBeforeToday() {
|
26
|
+
|
27
|
+
const ss = SpreadsheetApp.getActiveSpreadsheet();
|
28
|
+
const s = ss.getSheetByName('シート1'); // シート名で指定
|
29
|
+
const values = s.getRange('E:E').getValues(); //E列に日付けが入っているので、配列で取得。
|
30
|
+
const dt = new Date(new Date().setHours(0, 0, 0, 0)); //本日の0時の日付を作成
|
31
|
+
dt.setDate(dt.getDate()-2); //日付を-2
|
32
|
+
|
33
|
+
//後続でIndexOfするので、それぞれ文字列にする。
|
34
|
+
const arrayDateToString = values.map(String);
|
35
|
+
const dayToString = Utilities.formatDate(dt, 'JST', "E MMM dd yyyy HH:mm:ss 'GMT'Z '(Japan Standard Time)'");
|
36
|
+
|
37
|
+
//一昨日の日付のindexを取得
|
38
|
+
const indexOf2DaysBefore = arrayDateToString.indexOf(dayToString);
|
39
|
+
|
40
|
+
//1行目から一昨日までの行を非表示する。
|
41
|
+
s.hideRows(1, indexOf2DaysBefore);
|
42
|
+
}
|
22
43
|
```
|