如何修正代码,仅提取表格前5列数据至目标工作表?
修正代码:仅提取前5列数据写入目标工作表
你的问题出在没有对过滤后的数据做列数截取,直接把完整的7列数据写入了目标表,同时代码里的filteredData[5].length写法错误(它指向的是过滤后第6行的列数,不是你要的5列)。
按以下方式修改代码即可实现只提取前5列:
//Section D: 按Data Overview工作表的日期设置过滤条件 var filteredData = rngData.filter(function(row) { var date = row[0]; return date >= beginDate_current && date <= endDate_current }); // 新增:截取每一行的前5列,只保留需要的数据 filteredData = filteredData.map(row => row.slice(0, 5)); //Section E: 将过滤后的数据写入Summarized Data工作表的Current Month表格 sheet3.getRange("B7").getDataRegion().offset(6,0).clearContent(); // 修正列数参数为5,确保只写入5列数据 sheet3.getRange(7, 3, filteredData.length, 5).setValues(filteredData); sheet3.getRange(7, 3, filteredData.length, 5).sort([{column: 3, ascending: true}]); debugger }
关键修改说明:
- 用
map(row => row.slice(0,5))遍历过滤后的每一行,截取前5列数据,从根源上缩减列数 - 把写入区域的列数参数从错误的
filteredData[5].length改为5,保证写入的列数符合需求;如果担心过滤后数据为空,也可以用filteredData.length > 0 ? filteredData[0].length : 0来动态适配,但这里明确要5列,直接写5更直观 - 原代码中
filteredData[5].length的写法逻辑错误,不仅会导致列数判断失误,还可能在过滤后数据不足6行时触发报错
内容的提问来源于stack exchange,提问作者trend
相关产品推荐
相关产品推荐

