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

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.03 10:18:52