Google Sheets如何每周定时将Sheet1数值自动记录到Sheet2
谷歌脚本每周自动存档工时实现方案
你原有代码的问题是把读取到的值直接追加回了数据源Sheet1,只需要把追加行的目标对象改成专门的存档工作表,再配置好定时触发器即可实现需求。
修改后的可用代码
function recordWeeklyHours() { const ss = SpreadsheetApp.getActiveSpreadsheet(); // 读取存放实时工时的源工作表 const sourceSheet = ss.getSheetByName("Sheet1"); // 定义存档工作表的名称,可根据你的需求自行修改 const archiveSheetName = "每周工时存档"; let archiveSheet = ss.getSheetByName(archiveSheetName); // 若存档表不存在则自动新建,并写入表头 if (!archiveSheet) { archiveSheet = ss.insertSheet(archiveSheetName); archiveSheet.appendRow(["记录时间", "对应工时值"]); } // 读取需要留存的时间和目标单元格数值 const recordDate = new Date(); const targetValue = sourceSheet.getRange("K6").getValue(); // 将数据追加到存档表的末尾空行,不再写入源工作表 archiveSheet.appendRow([recordDate, targetValue]); }
每周日自动运行配置步骤
- 打开对应谷歌表格,点击顶部菜单栏「扩展程序」→「Apps 脚本」进入脚本编辑页
- 用上面的代码替换原有旧代码,点击顶部保存按钮,给脚本项目命名(比如「工时时长周度存档」)
- 点击脚本编辑器左侧的时钟形状「触发器」按钮,再点击右下角「添加触发器」
- 按以下参数配置触发器:
- 运行函数选择:
recordWeeklyHours - 事件源选择:「时间驱动」
- 时间类型选择:「周计时器」
- 运行时间选择:周日,建议选23:00-24:00区间的时间点,保证当周所有工时数据提交完成后再执行存档
- 运行函数选择:
- 点击保存后按弹窗提示完成脚本权限授权,配置就生效了
如果你需要留存的不止K6一个单元格的数据,只需要新增对应单元格的取值逻辑,同时在
appendRow传入的数组里按顺序加入对应变量即可,比如要同时存K7、K8的数值,就新增两行getRange取值代码,同步在追加行的数组里加上对应的变量名。
内容的提问来源于stack exchange,提问作者JohnnyMelou
相关产品推荐
相关产品推荐

