如何按范围复制Sheet A数据到Sheet B最后一行且消除空白行?
解决Google Apps Script复制数据时出现空白行的问题
问题根源
你当前代码中sourceSheet.getRange("Sheet A!A2:L")会选中从A2到L列的所有行,包含Sheet A里该范围内的空白行,导致复制到Sheet B时带入空白行。
修改后的代码
//TEST ////Get Data from Sheet A and Paste to Sheet B (无空白行版) function CopyandPaste() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var destSheet = ss.getSheetByName('Sheet B'); var sourceSheet = ss.getSheetByName('Sheet A'); // 获取Sheet A中实际有内容的最后一行行号 var sourceLastRow = sourceSheet.getLastRow(); // 若Sheet A中A2及以下无数据,直接终止操作 if (sourceLastRow < 2) return; // 定义仅包含有效数据的源范围:A2到L列的最后一行 var sourceRange = sourceSheet.getRange(2, 1, sourceLastRow - 1, 12); var destLastRow = destSheet.getLastRow(); // 检查Sheet B剩余行是否足够,不足则插入对应数量的行 if (destLastRow + sourceRange.getNumRows() > destSheet.getMaxRows()) { destSheet.insertRowsAfter(destLastRow, sourceRange.getNumRows()); } // 定义与源范围尺寸一致的目标范围 var destRange = destSheet.getRange(destLastRow + 1, 1, sourceRange.getNumRows(), sourceRange.getNumColumns()); sourceRange.copyTo(destRange, {contentsOnly: true}); };
关键改进点
- 用
getLastRow()精准定位Sheet A的有效数据边界,只复制非空白行的内容 - 目标范围与源范围的行数、列数完全匹配,避免多余空白行被粘贴
- 增加无数据时的终止判断,减少无效操作
内容的提问来源于stack exchange,提问作者Nur
相关产品推荐
相关产品推荐

