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

如何用Google Apps Script每日定时复制表格指定行数据并追加?

实现每日定时追加指定区域数据到表格下方

完整代码实现

以下是修正并完善后的代码,可实现你的需求:

function CopyRow() {
  // 获取指定的Sheet1,避免切换工作表时出错
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Sheet1");
  
  // 获取C3:F3区域的一行数据(第3行,第3列,1行,4列)
  const sourceData = sheet.getRange(3, 3, 1, 4).getValues()[0];
  
  // 获取当前日期(保留原生日期对象,表格会自动识别为日期格式)
  const today = new Date();
  // 若需要固定格式的日期字符串,可替换为下面一行:
  // const today = Utilities.formatDate(new Date(), Session.getScriptTimeZone(), "yyyy-MM-dd HH:mm:ss");
  
  // 合并日期与源数据,组成新的一行
  const combinedData = [today, ...sourceData];
  
  // 找到C列中最后一个有数据的行,下一行即为目标写入行(确保从C7开始)
  const lastRowInC = sheet.getRange("C:C").getValues().filter(String).length;
  const targetRow = lastRowInC === 0 ? 7 : lastRowInC + 1;
  
  // 将合并后的数据写入目标行(B列存日期,C:F列对应原数据)
  sheet.getRange(targetRow, 2, 1, combinedData.length).setValues([combinedData]);
}

代码说明

  • 指定工作表:用getSheetByName("Sheet1")替代getActiveSheet(),确保始终操作目标表格,避免切换工作表导致错误。
  • 修正数据范围:原代码中getRange(2,3,1,3)对应B3:D3,改为getRange(3,3,1,4)才是C3:F3区域(行从1开始计数,列C是第3列,F是第6列,共4列跨度)。
  • 日期处理:默认保留Date对象,表格会自动识别为日期格式;若需要自定义格式(如yyyy-MM-dd),可使用Utilities.formatDate方法。
  • 目标行定位:通过筛选C列的非空值确定最后一行,确保从C7开始追加(若C列无数据则直接从第7行开始)。

设置每日定时触发

  1. 在Google脚本编辑器中,点击顶部菜单的编辑 -> 当前项目的触发器。
  2. 点击右下角的添加触发器按钮:
    • 选择函数:CopyRow
    • 选择事件源:时间驱动
    • 选择类型:日计时器
    • 选择时段:根据需求设置每日触发的时间(如“上午9点到10点”)
  3. 保存触发器,脚本会在指定时段自动执行。

内容的提问来源于stack exchange,提问作者S O

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 08:08:31