Google Sheet Apps Script求助:添加30天判定实现行迁移
修改后的Google Apps Script代码
以下是满足你需求的代码,我添加了签名日期超过30天的判断逻辑:
function onEdit(e) { const src = e.source.getActiveSheet(); const r = e.range; // 基础判断:仅当编辑的是I列(第9列)、非表头行、状态以Completed开头时继续执行 if (r.columnStart != 9 || r.rowStart == 1 || !r.getValue().startsWith("Completed")) { return; } // 获取当前行的签名日期(H列,第8列) const signatureDate = src.getRange(r.rowStart, 8).getValue(); // 检查签名日期是否为有效日期,避免非日期值导致报错 if (!(signatureDate instanceof Date) || isNaN(signatureDate.getTime())) { return; } // 计算当前日期与签名日期的天数差 const currentDate = new Date(); const timeDiff = currentDate.getTime() - signatureDate.getTime(); const daysDiff = Math.floor(timeDiff / (1000 * 60 * 60 * 24)); // 仅当天数差超过30天时,才执行迁移操作 if (daysDiff <= 30) { return; } const dest = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("+ 30 days"); src.getRange(r.rowStart, 1, 1, 23).moveTo(dest.getRange(dest.getLastRow() + 1, 1, 1, 23)); src.deleteRow(r.rowStart); }
关键修改说明
- 添加了签名日期获取:通过
src.getRange(r.rowStart, 8).getValue()获取当前行H列的签名日期 - 增加日期有效性校验:避免单元格为空或非日期格式时触发错误
- 计算天数差:通过时间戳差值转换为天数,确保判断的准确性
- 新增30天阈值判断:只有当天数差大于30天时,才会执行行迁移和删除操作
内容的提问来源于stack exchange,提问作者Kate Stewart
相关产品推荐
相关产品推荐

