Google Sheets脚本求助:自动删除满一年的员工违规记录行
Google Sheets自动删除超一年违规记录脚本方案
以下是可直接使用的脚本,实现违规记录满一年自动删除并同步调整员工积分的功能:
function deleteExpiredViolations() { const spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); // 替换为你的违规记录表名称 const sheet = spreadsheet.getSheetByName("违规记录"); // 替换为员工积分汇总表名称(若不需要同步积分可删除相关代码) const scoreSheet = spreadsheet.getSheetByName("员工积分汇总"); const dataRange = sheet.getDataRange(); const values = dataRange.getValues(); const today = new Date(); // 计算一年前的日期 const oneYearAgo = new Date(today.getFullYear() - 1, today.getMonth(), today.getDate()); // 从后往前遍历,避免删除行导致索引错乱 for (let i = values.length - 1; i >= 1; i--) { const violationDate = new Date(values[i][1]); // 假设B列是违规日期(索引从0开始) // 检查日期是否有效且已超过一年 if (!isNaN(violationDate.getTime()) && violationDate < oneYearAgo) { const employeeId = values[i][0]; // A列是员工ID const deductScore = values[i][3]; // D列是违规扣分数值 // 同步恢复员工积分(若有汇总表) if (scoreSheet) { const scoreData = scoreSheet.getDataRange().getValues(); for (let j = 1; j < scoreData.length; j++) { if (scoreData[j][0] === employeeId) { scoreSheet.getRange(j + 1, 2).setValue(scoreData[j][1] + deductScore); break; } } } // 删除过期违规记录行 sheet.deleteRow(i + 1); } } }
配置步骤
- 替换工作表名称:将
"违规记录"和"员工积分汇总"改成你实际的表格名称 - 调整列索引:如果违规日期、员工ID、扣分数值不在示例中的列,对应修改代码里的索引数字(比如日期在C列就改成
values[i][2]) - 设置自动运行:
- 打开脚本编辑器,点击左侧「触发器」图标
- 添加新触发器,选择
deleteExpiredViolations函数,触发方式选「时间驱动」,频率设为「每天」
关键注意事项
- 先备份数据:测试前复制一份工作表,防止误删重要记录
- 规范日期格式:违规日期列必须是Google Sheets可识别的日期格式,否则脚本无法解析
- 授权权限:首次运行脚本时,需要授权Google Apps Script访问你的表格数据
内容的提问来源于stack exchange,提问作者Chris F.
相关产品推荐
相关产品推荐

