如何将Google Sheet数据复制到另一Google Sheet的最后一行且不覆盖旧数据
跨Google Sheet追加复制数据操作方案
操作前提
你需要对源表和目标表都有编辑权限。
步骤1:打开脚本编辑器
- 打开源Google Sheet文件,点击顶部菜单栏的「扩展程序」>「Apps Script」,进入脚本编辑页面。
步骤2:填入自定义脚本
- 删除编辑器里默认的空白代码,粘贴下方代码,按照注释修改4个配置参数:
function copyDataToTargetSheet() { // 自定义配置项,替换为你自己的表信息 const SOURCE_SPREADSHEET_ID = '替换为源Google Sheet的ID'; const SOURCE_SHEET_NAME = '替换为源工作表名称,例如:Sheet1'; const TARGET_SPREADSHEET_ID = '替换为目标Google Sheet的ID'; const TARGET_SHEET_NAME = '替换为目标工作表名称,例如:汇总表'; // 如果你不需要复制表头,把SKIP_HEADER的值改为true const SKIP_HEADER = false; // 读取源表数据 const sourceSheet = SpreadsheetApp.openById(SOURCE_SPREADSHEET_ID).getSheetByName(SOURCE_SHEET_NAME); const sourceData = sourceSheet.getDataRange().getValues(); const finalSourceData = SKIP_HEADER ? sourceData.slice(1) : sourceData; // 定位目标表首个空白行 const targetSheet = SpreadsheetApp.openById(TARGET_SPREADSHEET_ID).getSheetByName(TARGET_SHEET_NAME); const firstEmptyRow = targetSheet.getLastRow() + 1; // 追加写入数据,不会覆盖原有内容 targetSheet.getRange(firstEmptyRow, 1, finalSourceData.length, finalSourceData[0].length).setValues(finalSourceData); }
Google Sheet的ID可以从URL中提取,格式为
https://docs.google.com/spreadsheets/d/[表ID]/edit,复制/d/和/edit之间的字符串即可。
步骤3:运行脚本完成复制
- 点击编辑器顶部的「保存项目」按钮,随便输入一个项目名,比如「跨表同步工具」。
- 点击运行按钮,首次运行需要按照提示完成授权:如果弹出「Google未验证应用」提示,点击「高级」>「前往[你的项目名](不安全)」即可完成授权,该脚本为你自己创建,不存在安全风险。
- 运行完成后回到目标表,就能看到源表数据已经追加到原有数据的下方了。
可选配置
- 只粘贴值不保留公式:把代码最后一行的
.setValues(finalSourceData)替换为.setValues(finalSourceData.map(row => row.map(cell => typeof cell === 'object' ? cell.toString() : cell)))即可。 - 自动同步:点击编辑器左侧菜单栏的「触发」按钮,添加新触发器,可设置为源表更新时自动运行,或者按小时/天/周固定周期自动同步。
内容的提问来源于stack exchange,提问作者kero sh
相关产品推荐
相关产品推荐

