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
相关产品推荐
相关产品推荐

