如何在Google Sheets中设置自动隐藏前一日Google Form提交数据行
实现方案
纯内置公式/条件格式无法实现自动隐藏行,需要搭配Google Apps Script设置定时触发器完成,步骤如下:
步骤1:打开绑定的脚本编辑器
- 打开你同步表单数据的Google Sheets,点击顶部菜单栏「扩展程序」>「Apps Script」,打开脚本编辑界面,删除默认的
function myFunction() {}占位代码。
步骤2:粘贴自定义脚本
把下面的代码粘贴进去,按需修改对应参数:
function hidePreviousDayRows() { // 请修改为你存储表单数据的工作表名称,默认同步的工作表为“表单回复 1” const SHEET_NAME = "表单回复 1"; // 请修改为你存储提交时间戳的列序号,A列是1,B列是2,默认表单同步的时间戳在A列 const TIMESTAMP_COLUMN = 1; // 获取工作表对象 const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(SHEET_NAME); // 获取所有已填充数据的行号范围 const lastRow = sheet.getLastRow(); // 跳过表头行,从第2行开始处理(如果你的表头占多行自行修改起始行号) const startRow = 2; if (lastRow < startRow) return; // 无数据时不执行操作 // 获取时间戳列的所有值 const timestamps = sheet.getRange(startRow, TIMESTAMP_COLUMN, lastRow - startRow + 1, 1).getValues(); // 获取今天0点的时间戳用于对比 const today = new Date(); today.setHours(0, 0, 0, 0); const todayTime = today.getTime(); // 先取消所有行的隐藏,避免后续判断出错 sheet.unhideRows(startRow, lastRow - startRow + 1); // 遍历所有行,记录日期早于今天的行号 let rowsToHide = []; timestamps.forEach((row, index) => { const submitTime = new Date(row[0]); submitTime.setHours(0, 0, 0, 0); if (submitTime.getTime() < todayTime) { rowsToHide.push(startRow + index); } }); // 批量隐藏行 if (rowsToHide.length > 0) { rowsToHide.forEach(rowNum => { sheet.hideRows(rowNum); }); } }
步骤3:设置定时触发器
- 点击脚本编辑器左侧的「闹钟」图标(触发器),点击右下角「添加触发器」
- 按以下参数配置:
- 选择要运行的函数:
hidePreviousDayRows - 选择要运行的部署:Head(默认即可)
- 选择事件来源:时间驱动
- 选择类型基于时间的触发器:日计时器
- 选择时间:建议设置为每日凌晨0点到1点之间,执行后当天打开表格就只会显示当天的新提交数据
- 选择要运行的函数:
- 保存后按照提示授权脚本访问你的表格权限即可
注:首次授权时如果提示“Google未验证此应用”,点击「高级」>「前往(你的脚本名称)」即可完成授权,该脚本仅会访问你当前的表格数据,不会上传任何信息。
额外说明
- 如果之后需要查看历史数据,手动选中被隐藏行的前后行,右键选择「显示行」即可,不会影响脚本后续的自动隐藏逻辑。
- 脚本执行不会删除任何数据,只是隐藏旧数据行,所有历史提交都完整保留在表格里。
内容的提问来源于stack exchange,提问作者Kim Star
相关产品推荐
相关产品推荐

