Google Apps Script问题:For循环重复打印同一行数据
解决循环重复打印同一行的问题
问题根源
你的代码嵌套了两层循环,内层循环会遍历当前行的每一个非空列,每遍历一列就执行一次打印操作,所以同一行会被打印多次,次数等于该行的非空列数量。
修改后的代码
function sendMail() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("Pending Tasks"); var lr = sheet.getLastRow(); var range = sheet.getRange(2,1,lr-1,10).getValues(); // 过滤出非空行,避免处理空数据 var nonEmptyRows = range.filter(row => row.some(cell => cell !== "")); // 只遍历每一行,不再嵌套列循环 for(var i = 0; i < nonEmptyRows.length; i++){ var timestamp = nonEmptyRows[i][0]; Logger.log(nonEmptyRows[i]); // 直接打印整行数据 } }
修改说明
- 移除内层循环:不需要逐列遍历,只保留外层循环处理每一行,从根源避免重复打印
- 优化空行过滤:用
row.some(cell => cell !== "")更准确识别非空行(原range.filter(String)可能误判含空字符串的行) - 简化打印逻辑:直接打印整行数据,若只需打印特定列(比如timestamp),可改为
Logger.log(timestamp)
内容的提问来源于stack exchange,提问作者Deepak Raj
相关产品推荐
相关产品推荐

