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

如何将仅处理单行的Google Apps Script适配为处理工作表所有行?

修改Google Apps Script以处理所有行数据

修改思路

  • 获取"0_Test-LISTE PROJETS"工作表中从第4行开始的所有有效数据行
  • 遍历每一行原始数据,为每行生成对应的5条项目阶段明细记录
  • 将所有生成的记录汇总后一次性写入"GO"工作表,减少API调用次数提升效率

修改后的代码

function GENERAL() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var Cop = ss.getSheetByName("GO");
  var LP = ss.getSheetByName("0_Test-LISTE PROJETS");

  // 获取从第4行开始到最后一行的所有数据(A列到V列)
  var lastRow = LP.getLastRow();
  if (lastRow < 4) return; // 无数据行时直接退出
  var valueRange = LP.getRange(4, 1, lastRow - 3, 22).getValues();

  // 存储所有要写入的输出数据
  var outputData = [];

  // 遍历每一行原始数据生成阶段记录
  valueRange.forEach(function(row) {
    outputData.push(
      [row[5], row[7], row[9], row[16], row[20], 'duréé projet' /**color red*/],//项目总时长
      [row[5], row[7], row[9], row[16], row[17], 'phase de conception'/**color BLUE*/],//设计阶段
      [row[5], row[7], row[9], row[17], row[17] + ' 7days', 'attente retour BAT'/**color white*/],//等待客户反馈
      [row[5], row[7], row[9], row[17] + ' 7days', row[19], 'phase de fabrication'/**color green*/],//生产阶段
      [row[5], row[7], row[9], row[19], row[20], 'phase installation'/**color purple*/]//现场安装阶段
    );
  });

  // 清空目标表原有数据(可根据需求选择保留或移除)
  Cop.clearContents();

  // 批量写入所有数据到目标表
  if (outputData.length > 0) {
    Cop.getRange(1, 1, outputData.length, 6).setValues(outputData);
  }
}

关键修改说明

  • 动态数据范围:用getRange(4, 1, lastRow - 3, 22)替代固定行范围,自动适配所有有数据的行
  • 循环遍历处理:通过forEach遍历每一行原始数据,为每行生成对应阶段记录
  • 批量写入优化:将所有记录收集到数组后一次性调用setValues,相比逐行写入大幅提升执行效率
  • 边界防护:增加if (lastRow < 4) return避免无数据时触发错误

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 15:15:02