如何修改Google Sheets脚本删除2周及更早的过期数据条目
调整后可删除距今2周及更早条目的代码
function DeleteOldEntries() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("MASTER"); var datarange = sheet.getDataRange(); var lastrow = datarange.getLastRow(); var values = datarange.getValues(); // 获取所有数据存入二维数组 var currentDate = new Date(); // 今日日期 // 计算2周前的截止日期:距今14天及更早的条目会被删除 var cutoffDate = new Date(currentDate.getTime() - 14 * 24 * 60 * 60 * 1000); // 倒序遍历行,避免删除行导致索引错位 for (i = lastrow; i >= 3; i--) { // 数组从0开始索引,row1对应values[0],此处默认日期在第3列(C列),对应索引2 var tempDate = values[i-1][2]; // 先判断是否为有效日期,再判断是否早于等于截止日期 if (tempDate instanceof Date && !isNaN(tempDate.getTime()) && tempDate <= cutoffDate) { sheet.deleteRow(i); } } }
核心修改说明
- 新增2周阈值计算逻辑:通过当前时间戳减去14天对应的毫秒数,得到删除截止日期,匹配「删除2周及更早条目」的需求
- 修复日期有效性校验:原代码
tempDate!=NaN的判断逻辑无法正常识别无效日期,调整为类型校验+时间戳有效性校验,避免非日期内容触发误删 - 优化判断条件:将原逻辑中与当前日期对比,调整为与2周前的截止日期对比,仅删除符合时间要求的条目
注意事项
- 代码默认日期存放在第3列(C列),如果你的日期存储在其他列,请修改
values[i-1][2]中的索引值(索引从0开始计数,B列对应索引1、D列对应索引3,以此类推) - 代码默认前2行为表头,从第3行开始遍历数据,如果你的表格只有1行表头,请将循环条件
i >= 3修改为i >= 2
内容的提问来源于stack exchange,提问作者Lonestar Dads
相关产品推荐
相关产品推荐

