谷歌表格自动筛选最近7天数据脚本及定时执行求助
谷歌表格自动同步最近7天数据脚本方案
完整脚本代码
function syncLast7DaysData() { // 获取当前表格实例 const ss = SpreadsheetApp.getActiveSpreadsheet(); // 源工作表:Test const sourceSheet = ss.getSheetByName('Test'); // 目标工作表:Test 7 days,不存在则创建 let targetSheet = ss.getSheetByName('Test 7 days'); if (!targetSheet) { targetSheet = ss.insertSheet('Test 7 days'); } // 获取源表所有数据(含表头),自动适配新增行 const sourceData = sourceSheet.getDataRange().getValues(); if (sourceData.length <= 1) return; // 无数据则终止 // 获取表头行 const headerRow = sourceData[0]; // 计算7天前的日期(当天也算入,和原公式逻辑一致) const sevenDaysAgo = new Date(); sevenDaysAgo.setDate(sevenDaysAgo.getDate() - 7); // 筛选最近7天的数据:A列日期 >= 7天前,保留表头+符合条件的行 const filteredData = [headerRow]; for (let i = 1; i < sourceData.length; i++) { const rowDate = sourceData[i][0]; // 确保A列是日期格式,且在范围内 if (rowDate instanceof Date && rowDate >= sevenDaysAgo) { filteredData.push(sourceData[i]); } } // 清空目标表原有数据 targetSheet.clearContents(); // 将筛选后的数据写入目标表 if (filteredData.length > 0) { targetSheet.getRange(1, 1, filteredData.length, filteredData[0].length).setValues(filteredData); } }
操作步骤
- 打开你的谷歌表格,点击顶部菜单栏的「扩展程序」→「Apps 脚本」,进入脚本编辑器。
- 删除编辑器里的默认代码,粘贴上面的完整脚本。
- 点击编辑器顶部的「保存」按钮,给脚本命名(比如「SyncLast7Days」)。
- 设置每日自动触发器:
- 点击编辑器左侧的「触发器」图标(时钟样式)。
- 点击「添加触发器」按钮。
- 配置选项:
- 选择要运行的函数:
syncLast7DaysData - 选择部署类型:「时间驱动」
- 选择时间类型:「日计时器」
- 选择时间区间:比如「上午6点到上午7点」(根据你的需求选合适的时间段)
- 点击「保存」,按提示完成授权(注意要允许脚本访问你的表格数据)。
- 选择要运行的函数:
- 测试脚本:回到编辑器,点击「运行」按钮,执行
syncLast7DaysData函数,检查「Test 7 days」表是否正确生成数据。
关键逻辑说明
- 自动适配新增行:用
getDataRange()获取源表所有已填充数据的范围,无需固定行号,新增数据会被自动纳入。 - 日期筛选逻辑:和原公式
TODAY()-Test!A2:A39<=7保持一致,计算当前日期往前推7天的时间点,筛选A列日期大于等于该时间点的行。 - 目标表处理:如果「Test 7 days」表不存在会自动创建,每次执行前清空原有数据再写入新筛选结果,避免数据重复。
内容的提问来源于stack exchange,提问作者Michał Dziedzic
相关产品推荐
相关产品推荐

