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

如何在Google Sheets中删除纯文本日期列超过30天的对应行

解决方案

你不需要修改E列的纯文本格式,只需要在代码中新增一步,把E列读取到的带序数后缀(th/rd/st/nd)的日期字符串预处理成可被Date()对象识别的格式即可,修改后的代码如下:

function deleteOldRows() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = ss.getSheetByName("sheet1");
  var datarange = sheet.getDataRange();
  var lastrow = datarange.getLastRow();
  var values = datarange.getValues();

  // 计算30天前的日期
  var monthOld = new Date()
  monthOld = new Date(monthOld.getTime() - 30 * 3600000 * 24)
  
  for (i = lastrow; i >= 2; i--) {
    var dateStr = values[i-1][4];
    // 去掉日期中的序数后缀,仅处理内存中的字符串,不修改表格原始内容
    var cleanedDateStr = dateStr.replace(/(\d+)(st|nd|rd|th)/, '$1');
    var tempDate = new Date(cleanedDateStr);
    // 新增日期有效性判断,避免空值/格式错误的行被误删
    if (!isNaN(tempDate.getTime()) && tempDate <= monthOld) {
      sheet.deleteRow(i);
      Logger.log(`Row ${i} was deleted`);
    }
  }
}

关键逻辑说明

  • 正则替换仅修改代码读取到内存的字符串内容,不会写入回表格,不会改变E列的纯文本格式,完全不影响你其他生成JSON的脚本正常运行
  • 新增的有效性校验可以避免E列空行、格式异常行触发错误操作

内容的提问来源于stack exchange,提问作者Eric

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 10:39:03