Apps Script 无表头复制非空行到另一工作表的代码修正求助
修正后的可运行代码
function copyAndAddNewEntries() { // 请替换为实际的源表格ID、源工作表名 var sourceSheet = SpreadsheetApp.openById('SOURCE_SHEET_ID').getSheetByName('SOURCE_SHEET_NAME') var sourceSheetrange = sourceSheet.getDataRange(); var sourceSheetData = sourceSheetrange.getValues(); // 请替换为实际的目标表格ID、目标工作表名 var targetSheet = SpreadsheetApp.openById('TARGET_SHEET_ID').getSheetByName('TARGET_SHEET_NAME'); // 去掉第一行表头 + 过滤全空行 var filteredData = sourceSheetData.slice(1).filter(row => { // 判断行是否非空:只要有一个单元格有内容就保留 return row.some(cell => String(cell).trim() !== ''); }); // 仅当存在有效数据时执行写入操作,避免空写入报错 if(filteredData.length > 0) { targetSheet.getRange( targetSheet.getLastRow() + 1, 1, filteredData.length, filteredData[0].length ).setValues(filteredData); } }
核心改动点
- 移除表头:通过
slice(1)对读取到的二维数组做截取,跳过索引为0的第一行表头数据,仅保留从第二行开始的内容 - 过滤全空行:使用
filter配合some方法,剔除所有单元格都为空的无效行,仅保留存在有效内容的行,同时做了去空格处理避免空白字符误判 - 适配写入范围:写入目标表时使用过滤后的数据的实际长度作为行高参数,同时新增空数据判断逻辑,避免没有有效数据时的运行报错
内容的提问来源于stack exchange,提问作者Bob Hardball
相关产品推荐
相关产品推荐

