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

Google Sheets脚本查找下一个空行时如何忽略G至I列?

解决方法

你当前使用的datasheet.getLastRow()会统计整个工作表所有列的内容,所以G/I列有数据时会导致计算的空行位置不符合预期。只需将原来定义blankRow的代码替换为只统计A-F列的逻辑即可,修改后完整代码如下:

if(validateEntry()==true){
  // 替换原有blankRow定义逻辑,仅统计A-F列(第1到6列)的最后非空行
  var colCount = 6; // 只检查A到F共6列
  var allRows = datasheet.getRange(1, 1, datasheet.getMaxRows(), colCount).getValues();
  var lastValidRow = 0;
  // 倒序遍历找第一个A-F列不全为空的行
  for (var i = allRows.length - 1; i >= 0; i--) {
    if (allRows[i].some(cell => cell !== "")) {
      lastValidRow = i + 1; // 数组下标从0开始,行号从1开始,所以加1
      break;
    }
  }
  var blankRow = lastValidRow + 1; // 得到A-F列的下一个空行

  // 以下原有写入逻辑保持不变
  datasheet.getRange(blankRow,1).setValue(shUserForm.getRange("B4").getValue()); //Issue Date
  datasheet.getRange(blankRow,2).setValue(shUserForm.getRange("B6").getValue()); //Requested By
  datasheet.getRange(blankRow,3).setValue(shUserForm.getRange("B8").getValue()); //Market
  datasheet.getRange(blankRow,4).setValue(shUserForm.getRange("B10").getValue()); //Job Name
  datasheet.getRange(blankRow,5).setValue(shUserForm.getRange("B12").getValue()); //Type
  datasheet.getRange(blankRow,6).setValue(shUserForm.getRange("B14").getValue()); //Subcontractor

  shUserForm.getRange("B6").clearContent();
  shUserForm.getRange("B8").clearContent();
  shUserForm.getRange("B10").clearContent();
  shUserForm.getRange("B12").clearContent();
  shUserForm.getRange("B14").clearContent();
}

逻辑说明

  • 我们只获取A到F列的所有单元格值进行遍历判断,完全不涉及G到I列的内容
  • 倒序遍历可以快速定位到A-F列的最后一个有内容的行,不需要遍历所有行,执行效率更高

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:51:00