You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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])
  • 设置自动运行:
    1. 打开脚本编辑器,点击左侧「触发器」图标
    2. 添加新触发器,选择deleteExpiredViolations函数,触发方式选「时间驱动」,频率设为「每天」

关键注意事项

  • 先备份数据:测试前复制一份工作表,防止误删重要记录
  • 规范日期格式:违规日期列必须是Google Sheets可识别的日期格式,否则脚本无法解析
  • 授权权限:首次运行脚本时,需要授权Google Apps Script访问你的表格数据

内容的提问来源于stack exchange,提问作者Chris F.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.13 20:45:52