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

如何从其他工作表复制数据并追加为新行,同时调整数据格式?

解决Google Sheets脚本的两个问题:追加行与转置数据

问题说明

  • 当前脚本会覆盖目标区域数据,需改为追加新行而非覆盖
  • 源数据为竖排(如J6:J9),需转换为横排一行后粘贴

修改后的完整代码

function copyPaste(sourceLink, sourceSheet, sourceRange, destiLink, destiSheet) {
  // 读取源数据
  var ssRaw = SpreadsheetApp.openByUrl(sourceLink);
  var sheetRaw = ssRaw.getSheetByName(sourceSheet);
  var range = sheetRaw.getRange(sourceRange);
  var data = range.getValues();

  // 将竖排二维数组转成横排一维数组
  const transposedData = data.map(row => row[0]);

  // 写入目标表格
  var ss = SpreadsheetApp.openByUrl(destiLink);
  var sheet = ss.getSheetByName(destiSheet);

  // 追加新行,不覆盖原有数据
  sheet.appendRow(transposedData);
}

function run() {
  copyPaste(
    'https://docs.google.com/spreadsheets/d/16cXFr_mkS_Hheicg1oNTZzrk65NeqYwiDpsi1TygcYI/edit#gid=1155920417',
    'Invoice Calculator',
    'J6:J9',
    'https://docs.google.com/spreadsheets/d/16cXFr_mkS_Hheicg1oNTZzrk65NeqYwiDpsi1TygcYI/edit#gid=1810062534',
    'Employee Pay Tracker'
  );
}

关键修改点

  1. 数据转置:
    源数据通过getValues()返回的是二维数组(竖排时为多行1列),使用data.map(row => row[0])提取每行首个元素,将其转换为一维数组,对应横排的一行数据,满足格式需求。

  2. 追加行逻辑:

    • 移除了原代码中clearContent()和setValues()的覆盖式写入逻辑
    • 改用appendRow()方法,该方法会自动在目标表格的最后一行下方插入新行,完全避免覆盖原有数据
    • 删除了原函数中的destiRange参数,因为追加行无需指定固定目标范围

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 11:52:52