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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 16:04:52