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

Apps Script如何将Sheet1指定列数据追加写入到Sheet2最后可用行

Google Apps Script 列顺序复制追加修改方案

核心改动逻辑

原代码固定从Sheet2第1行开始写入会覆盖旧数据,要实现追加只需要先获取Sheet2的最后有效行,将写入起始行设置为最后有效行+1即可。另外原代码将写入操作放在了行遍历循环内,会重复执行多次写入,建议移到循环外提升执行效率。

修改后的完整代码

function Copy_data()
{
  var src = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET 1");
  var des = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("SHEET 2");
  var srng = src.getDataRange(); 
  var srngA = srng.getValues(); 
  var drngA = [];
  var colA = [1,3,2,4];// 自定义列顺序
  for (var i = 0; i < srngA.length;i++ )
  {
    var k = 0;
    drngA[i]=[];
    for(var j=0;j<srngA[i].length;j++)
    {
        drngA[i][k++] = srngA[i][colA[j]-1];
    }
  }
  // 以下为修改后的追加写入代码
  var startRow = des.getLastRow() + 1; // 计算追加起始行:最后有内容行+1,空表自动从第1行开始
  drng = des.getRange(startRow,1,drngA.length,drngA[0].length);
  drng.setValues(drngA);
}

原指定代码段替换说明

你提到的原有两行代码:

drng = des.getRange(1,1,drngA.length,drngA[0].length);//destination array controls size of destination range.
drng.setValues(drngA);

直接替换为以下代码即可,注意要把这部分代码从for (var i = 0; i < srngA.length;i++ )循环内部移到循环结束的外部,避免重复写入:

var startRow = des.getLastRow() + 1;
drng = des.getRange(startRow,1,drngA.length,drngA[0].length);
drng.setValues(drngA);

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 12:15:04