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

无需Query和Importrange,如何自动复制Google Sheets行数据(仅值)?

用Google Apps Script实现Google Sheets纯值自动复制教程

完全可以用Google Apps Script实现你的需求,以下是针对新手的详细操作步骤:

1. 获取表格ID

打开你的源表格和目标表格,从浏览器地址栏里提取它们的ID:
地址栏格式类似:https://docs.google.com/spreadsheets/d/表格ID/edit...
把表格ID那串字符记下来,后面要用到。

2. 打开脚本编辑器

在源表格里,点击顶部菜单栏的「扩展」→「Apps Script」,会打开一个新的脚本编辑页面。把默认的function myFunction() {}代码删掉。

3. 编写复制脚本

把下面的代码粘贴到编辑器里,然后替换代码里的占位内容:

function copyRowsAsValues() {
  // 替换成你的源表格ID和工作表名称(比如"Sheet1")
  const sourceSheetId = "你的源表格ID";
  const sourceSheetName = "源工作表名";
  
  // 替换成你的目标表格ID和工作表名称
  const targetSheetId = "你的目标表格ID";
  const targetSheetName = "目标工作表名";
  
  // 获取源工作表的所有纯值数据
  const sourceSheet = SpreadsheetApp.openById(sourceSheetId).getSheetByName(sourceSheetName);
  const sourceData = sourceSheet.getDataRange().getValues();
  
  // 获取目标工作表
  const targetSheet = SpreadsheetApp.openById(targetSheetId).getSheetByName(targetSheetName);
  
  // 可选:如果要覆盖目标表格原有数据,取消下面一行的注释
  // targetSheet.clearContents();
  
  // 将数据追加到目标表格最后一行之后
  const targetStartRow = targetSheet.getLastRow() + 1;
  targetSheet.getRange(targetStartRow, 1, sourceData.length, sourceData[0].length).setValues(sourceData);
}

代码说明:

  • getValues():专门提取单元格的纯文本/数值,不会携带公式
  • setValues():把纯值写入目标表格,同样不会生成公式
  • 如果不需要追加,而是要覆盖目标表格内容,取消targetSheet.clearContents();的注释即可

4. 测试脚本

点击编辑器顶部的「运行」按钮(三角形图标),第一次运行会弹出授权提示:

  1. 点击「查看权限」→选择你的谷歌账号
  2. 点击「高级」→「转到XX脚本(不安全)」(这是你自己写的脚本,完全安全)
  3. 点击「允许」完成授权

授权完成后,脚本会自动执行,去目标表格检查数据是否正确复制(都是纯值,没有公式)。

5. 设置自动触发(可选)

如果需要脚本自动运行(比如源表格更新时自动复制,或者每天定时执行):

  1. 点击编辑器左侧的时钟图标「触发器」
  2. 点击右下角「添加触发器」,按以下设置:
    • 选择要运行的函数:copyRowsAsValues
    • 选择事件源:
      • 若要源表格有编辑时自动复制:选「电子表格」→事件类型「编辑时」
      • 若要定时执行:选「时间驱动」→设置你需要的频率(比如每天上午9点)
  3. 点击「保存」即可

进阶:只复制新增行(避免重复)

如果不想每次都复制全部数据,只复制新增的行,可以用下面的脚本:

function copyNewRowsAsValues() {
  const sourceSheetId = "你的源表格ID";
  const sourceSheetName = "源工作表名";
  const targetSheetId = "你的目标表格ID";
  const targetSheetName = "目标工作表名";
  
  const sourceSheet = SpreadsheetApp.openById(sourceSheetId).getSheetByName(sourceSheetName);
  const targetSheet = SpreadsheetApp.openById(targetSheetId).getSheetByName(targetSheetName);
  
  // 用源表格的A1单元格记录上次复制的最后一行号(第一次运行时A1留空即可)
  const lastCopiedRow = sourceSheet.getRange("A1").getValue() || 0;
  const currentLastRow = sourceSheet.getLastRow();
  
  // 只有当源表格有新增行时才执行复制
  if (currentLastRow > lastCopiedRow) {
    const newData = sourceSheet.getRange(lastCopiedRow + 1, 1, currentLastRow - lastCopiedRow, sourceSheet.getLastColumn()).getValues();
    const targetStartRow = targetSheet.getLastRow() + 1;
    targetSheet.getRange(targetStartRow, 1, newData.length, newData[0].length).setValues(newData);
    
    // 更新A1单元格的记录,下次只复制之后的新增行
    sourceSheet.getRange("A1").setValue(currentLastRow);
  }
}

使用这个脚本时,记得把触发器绑定到copyNewRowsAsValues函数。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 11:43:12