我的电子表格中有一些单元格,我想在特定日期结束时删除或删除它们。你能帮助我吗? 我已经安装了谷歌脚本。
java编程,触发删除特定日期的单元格。 等待回复
function deleteOldRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Sheet0");
const [hA, ...vs] = sh.getDataRange().getValues();
const dtv = new Date().valueOf();
let idx = {};
let d = 0;
hA.forEach((h, i) => idx[h] = i);
vs.forEach((r, i) => {
let dv = new Date(r[idx["COL1"]]).valueOf();
if (dv < dtv) {
sh.deleteRow(i + 2 - d++)
}
})
}
起始数据:
A | B | C | D | E | |
---|---|---|---|---|---|
1 | COL1 | COL2 | COL3 | COL4 | COL5 |
2 | 2023 年 8 月 1 日 | 21 | 14 | 2 | 24 |
3 | 2023 年 8 月 2 日 | 21 | 20 | 21 | 24 |
4 | 2023 年 8 月 3 日 | 17 | 22 | 23 | 5 |
5 | 2023 年 8 月 4 日 | 5 | 24 | 9 | 23 |
6 | 2023 年 8 月 5 日 | 16 | 3 | 23 | 14 |
7 | 2023 年 8 月 6 日 | 12 | 8 | 16 | 7 |
8 | 2023 年 8 月 7 日 | 21 | 20 | 14 | 17 |
9 | 2023年8月8日 | 18 | 8 | 7 | 24 |
10 | 2023 年 8 月 9 日 | 19 | 19 | 18 | 16 |
11 | 2023 年 8 月 10 日 | 22 | 22 | 4 | 19 |
12 | 2023 年 8 月 11 日 | 2 | 16 | 18 | 1 |
13 | 2023 年 8 月 12 日 | 16 | 8 | 3 | 20 |
14 | 2023 年 8 月 13 日 | 5 | 1 | 15 | 21 |
15 | 2023 年 8 月 14 日 | 11 | 11 | 13 | 15 |
16 | 2023年8月15日 | 22 | 13 | 3 | 6 |
17 | 2023 年 8 月 16 日 | 20 | 6 | 19 | 1 |
18 | 2023年8月17日 | 7 | 20 | 5 | 24 |
19 | 2023年8月18日 | 5 | 8 | 18 | 6 |
20 | 2023年8月19日 | 4 | 13 | 12 | 21 |
21 | 2023 年 8 月 20 日 | 10 | 7 | 17 | 14 |
22 | 2023 年 8 月 21 日 | 11 | 6 | 11 | 11 |
23 | 2023 年 8 月 22 日 | 21 | 13 | 7 | 8 |
24 | 2023 年 8 月 23 日 | 9 | 17 | 21 | 21 |
25 | 2023 年 8 月 24 日 | 15 | 0 | 17 | 23 |
26 | 2023年8月25日 | 12 | 17 | 21 | 10 |
结束数据:
A | B | C | D | E | |
---|---|---|---|---|---|
1 | COL1 | COL2 | COL3 | COL4 | COL5 |
2 | 2023 年 8 月 13 日 | 5 | 1 | 15 | 21 |
3 | 2023 年 8 月 14 日 | 11 | 11 | 13 | 15 |
4 | 2023年8月15日 | 22 | 13 | 3 | 6 |
5 | 2023 年 8 月 16 日 | 20 | 6 | 19 | 1 |
6 | 2023年8月17日 | 7 | 20 | 5 | 24 |
7 | 2023年8月18日 | 5 | 8 | 18 | 6 |
8 | 2023年8月19日 | 4 | 13 | 12 | 21 |
9 | 2023 年 8 月 20 日 | 10 | 7 | 17 | 14 |
10 | 2023 年 8 月 21 日 | 11 | 6 | 11 | 11 |
11 | 2023 年 8 月 22 日 | 21 | 13 | 7 | 8 |
12 | 2023 年 8 月 23 日 | 9 | 17 | 21 | 21 |
13 | 2023 年 8 月 24 日 | 15 | 0 | 17 | 23 |
14 | 2023年8月25日 | 12 | 17 | 21 | 10 |
如果你想保留今天,你可以这样做:
function deleteOldRows() {
const ss = SpreadsheetApp.getActive();
const sh = ss.getSheetByName("Sheet0");
const [hA, ...vs] = sh.getDataRange().getValues();
let dt = new Date();
const dtv = new Date(dt.getFullYear(),dt.getMonth(),dt.getDate()).valueOf();
let idx = {};
let d = 0;
hA.forEach((h, i) => idx[h] = i);
vs.forEach((r, i) => {
let dv = new Date(r[idx["COL1"]]).valueOf();
if (dv < dtv) {
sh.deleteRow(i + 2 - d++)
}
})
}
这取决于您的日期值是否包含时间