如何修改Google Sheets脚本实现按条件导出指定行至其他工作表
修改后的Google Apps Script代码
function copyPaste() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var source = ss.getSheetByName("Print Results"); // 仅获取A8到M列的范围:第8行开始,第1列(A)到第13列(M),行数为源表最后一行减7(排除前7行) var rangeSource = source.getRange(8, 1, source.getLastRow() - 7, 13); var data = rangeSource.getValues(); // 过滤规则:仅保留J列(对应数组索引9,数组从0开始计数)值大于0的行,用Number转换避免文本型数字判断错误 var filteredData = data.filter(row => Number(row[9]) > 0); Logger.log(filteredData); // 没有符合条件的数据直接终止,避免报错 if (filteredData.length === 0) return; var sss = SpreadsheetApp.openById("XXXXXX"); var target = sss.getSheetByName("Sheet2"); // 写入范围的行高列宽匹配过滤后的数据 target.getRange(target.getLastRow() + 1, 1, filteredData.length, filteredData[0].length).setValues(filteredData); }
核心修改点说明
- 调整了读取范围:不再读取整个工作表的已用数据,仅固定读取A8到M列的内容,排除了无关的行和列
- 新增了行过滤逻辑:针对J列(数组索引为9,因为JS数组从0开始计数,A列对应索引0,J列是第10列对应索引9)做判断,用
Number()强制转换数值类型,兼容VLOOKUP返回的文本格式数字的判断场景,仅保留USER ID大于0的行 - 新增了空数据判断:如果没有符合条件的行直接终止脚本,避免调用setValues时因空数组抛出报错
内容的提问来源于stack exchange,提问作者Andrew Michael
相关产品推荐
相关产品推荐

