You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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]); // 直接打印整行数据
  }
}

修改说明

  1. 移除内层循环:不需要逐列遍历,只保留外层循环处理每一行,从根源避免重复打印
  2. 优化空行过滤:用row.some(cell => cell !== "")更准确识别非空行(原range.filter(String)可能误判含空字符串的行)
  3. 简化打印逻辑:直接打印整行数据,若只需打印特定列(比如timestamp),可改为Logger.log(timestamp)

内容的提问来源于stack exchange,提问作者Deepak Raj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 16:05:21