回答編集履歴

3

追記した日付を訂正

2023/10/04 01:00

投稿

YellowGreen
YellowGreen

スコア861

test CHANGED
@@ -1,4 +1,4 @@
1
- (2023/10/3追記)
1
+ (2023/10/4追記)
2
2
  ごめんなさい。日曜日以外の動作を気にするあまり、
3
3
  日曜日当日に起動したときの動作がが一週間ずれていましたので、
4
4
  修正しましたのでご確認ください。

2

コードを修正したものを追記しました。

2023/10/04 00:58

投稿

YellowGreen
YellowGreen

スコア861

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

シート名をあわせました。

2023/10/02 04:02

投稿

YellowGreen
YellowGreen

スコア861

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('シ1');
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();//今日の日付