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
相关产品推荐
相关产品推荐

