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

使用GAS筛选最近两个周一之间日期的代码问题求助

修复GAS日期筛选代码的问题

你的代码存在几个关键问题,导致执行后表格变为空白:

问题点分析

  • 公式参数顺序错误:ISBETWEEN要求起始日期小于结束日期,你颠倒了最近周一与上一个周一的顺序,导致筛选范围不存在
  • 公式括号未闭合:末尾缺失一个右括号,造成公式语法无效
  • 未处理无筛选场景:如果表格原本没有筛选,getFilter()会返回null,直接调用setColumnFilterCriteria会触发报错

修复后的代码

function filt() {
  const sheet = SpreadsheetApp.getActiveSheet();
  // 获取当前筛选,无筛选则创建新筛选
  let filter = sheet.getFilter();
  if (!filter) {
    filter = sheet.createFilter();
  }
  
  // 计算两个周一的日期:上上个周一(起始)、上周周一(结束)
  const criteriaFormula = `=ISBETWEEN(F2, TODAY()-14-WEEKDAY(TODAY()-14,3), TODAY()-7-WEEKDAY(TODAY()-7,3))`;
  
  const criteria = SpreadsheetApp.newFilterCriteria()
                                 .whenFormulaSatisfied(criteriaFormula)
                                 .build();
  // 应用筛选规则到第6列(F列)
  filter.setColumnFilterCriteria(6, criteria);
}

关键说明

  • 调整ISBETWEEN参数顺序:TODAY()-14-WEEKDAY(TODAY()-14,3)计算上上个周一,TODAY()-7-WEEKDAY(TODAY()-7,3)计算上周周一,确保筛选范围有效
  • 修正公式括号,保证语法正确
  • 添加筛选存在性判断,避免无筛选时的报错
  • 公式使用F2而非F2:F,whenFormulaSatisfied会自动将规则应用到整列每一行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 22:10:11