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

Google Apps Script开发需求:按今日起3天内日期过滤表格

用Google Apps Script筛选表格中今日至未来3天的对象

下面是针对你的需求编写的完整脚本,附带详细说明,适合新手使用:

完整脚本

function filterUpcomingObjects() {
  // 获取当前打开的表格文件
  const ss = SpreadsheetApp.getActiveSpreadsheet();
  // 读取存储原始数据的sheet(请替换成你实际的sheet名称)
  const sourceSheet = ss.getSheetByName("数据源");
  // 准备存储筛选结果的sheet,不存在则自动创建
  let resultSheet = ss.getSheetByName("近期内容");
  if (!resultSheet) {
    resultSheet = ss.insertSheet("近期内容");
  }
  
  // 获取所有数据,跳过第一行表头
  const allData = sourceSheet.getDataRange().getValues().slice(1);
  // 初始化今日日期,清零时分秒避免时间干扰
  const today = new Date();
  today.setHours(0, 0, 0, 0);
  // 计算未来3天的截止日期
  const threeDaysLater = new Date(today);
  threeDaysLater.setDate(today.getDate() + 3);
  
  // 筛选符合日期范围的行
  const filteredRows = allData.filter(row => {
    // 将表格中的DD/MM/YYYY格式日期转为标准Date对象
    const [day, month, year] = row[0].split("/");
    const rowDate = new Date(year, month - 1, day);
    rowDate.setHours(0, 0, 0, 0);
    // 判断日期是否在今日到未来3天区间内(包含两端)
    return rowDate >= today && rowDate <= threeDaysLater;
  });
  
  // 清空结果sheet旧内容,写入新数据
  resultSheet.clearContents();
  resultSheet.appendRow(["Dates", "Objects"]); // 写入表头
  if (filteredRows.length > 0) {
    resultSheet.getRange(2, 1, filteredRows.length, filteredRows[0].length).setValues(filteredRows);
  } else {
    resultSheet.appendRow(["无符合条件的内容"]);
  }
  
  // 弹出提示告知完成状态
  SpreadsheetApp.getUi().alert("筛选完成,结果已保存到「近期内容」sheet");
}

使用说明

  1. 修改sheet名称:如果你的原始数据不在名为「数据源」的sheet中,把getSheetByName("数据源")里的字符串替换成实际的sheet名称。
  2. 日期格式适配:脚本默认适配你表格中的DD/MM/YYYY日期格式,如果格式不同,需要调整split("/")后的拆分数组顺序。
  3. 运行脚本:
    • 打开你的Google表格,点击顶部菜单「扩展程序」→「Apps脚本」
    • 将上述代码粘贴到脚本编辑器中,点击「保存」,命名项目(比如"近期内容筛选")
    • 点击运行按钮,首次运行需要授权,按照提示完成权限验证即可。

可选功能:原表高亮符合条件的行

如果想直接在原表中高亮近期内容,可在脚本中添加以下代码(放在filteredRows定义之后):

// 清除原表所有高亮背景
sourceSheet.getDataRange().setBackground(null);
// 遍历数据,给符合条件的行设置黄色背景
allData.forEach((row, index) => {
  const [day, month, year] = row[0].split("/");
  const rowDate = new Date(year, month - 1, day);
  rowDate.setHours(0, 0, 0, 0);
  if (rowDate >= today && rowDate <= threeDaysLater) {
    // 行号为index+2(因为跳过了表头,index从0开始)
    sourceSheet.getRange(index + 2, 1, 1, sourceSheet.getLastColumn()).setBackground("#ffffcc");
  }
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 18:22:41