回答編集履歴
3
追記した日付を訂正
test
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
(2023/10/
|
1
|
+
(2023/10/4追記)
|
2
2
|
ごめんなさい。日曜日以外の動作を気にするあまり、
|
3
3
|
日曜日当日に起動したときの動作がが一週間ずれていましたので、
|
4
4
|
修正しましたのでご確認ください。
|
2
コードを修正したものを追記しました。
test
CHANGED
@@ -1,3 +1,38 @@
|
|
1
|
+
(2023/10/3追記)
|
2
|
+
ごめんなさい。日曜日以外の動作を気にするあまり、
|
3
|
+
日曜日当日に起動したときの動作がが一週間ずれていましたので、
|
4
|
+
修正しましたのでご確認ください。
|
5
|
+
|
6
|
+
```JavaScript
|
7
|
+
//今週より前の週までを非表示にする
|
8
|
+
function myFunction() {
|
9
|
+
const column = 3;//判定する日付の列
|
10
|
+
const ss = SpreadsheetApp.getActive();
|
11
|
+
const sheet = ss.getSheetByName('シート1');
|
12
|
+
//日付の列のデータを取得
|
13
|
+
const values = sheet.getRange(1, column, sheet.getLastRow(), 1).getValues().flat();
|
14
|
+
const ixDate = new Date();//今日の日付
|
15
|
+
ixDate.setHours(0, 0, 0, 0);//比較のため時刻をクリア
|
16
|
+
ixDate.setDate(ixDate.getDate() - ixDate.getDay());//今週の日曜
|
17
|
+
let row = 0;//日付の行番号を保存
|
18
|
+
for (let i = 0; i < values.length; i++) {
|
19
|
+
if (Object.prototype.toString.call(values[i]) == '[object Date]') {
|
20
|
+
const date = values[i];
|
21
|
+
row = i + 1;//今週の行番号を代入
|
22
|
+
console.log(Utilities.formatDate(date, 'JST', 'yyyy/MM/dd'));
|
23
|
+
if (date >= ixDate) {//比較を簡便にするため>=としている
|
24
|
+
//今週(以降)の日付なら前の行までを非表示
|
25
|
+
if (row > 1) {
|
26
|
+
sheet.hideRows(1, row - 1);//前の行までを非表示
|
27
|
+
}
|
28
|
+
break;
|
29
|
+
}
|
30
|
+
}
|
31
|
+
}
|
32
|
+
}
|
33
|
+
```
|
34
|
+
|
35
|
+
(当初の回答)
|
1
36
|
表示は日本語になっていますが、
|
2
37
|
日付がテキストでなくて日付として入力されているのであれば、
|
3
38
|
次のような方法が使えると思います。
|
1
シート名をあわせました。
test
CHANGED
@@ -7,7 +7,7 @@
|
|
7
7
|
function myFunction() {
|
8
8
|
const column = 3;//判定する日付の列
|
9
9
|
const ss = SpreadsheetApp.getActive();
|
10
|
-
const sheet = ss.getSheetByName('シ
|
10
|
+
const sheet = ss.getSheetByName('シフト');
|
11
11
|
//日付の列のデータを取得
|
12
12
|
const values = sheet.getRange(1, column, sheet.getLastRow(), 1).getValues().flat();
|
13
13
|
const today = new Date();//今日の日付
|