请求修复Google Sheets脚本:将I6内容写入G列首个空白单元格
修复后的Google Sheets脚本
要实现将Input表I6的内容写入Trades表G列的首个空白单元格,需要修改原脚本中定位目标单元格的逻辑,同时修正列号的错误(原脚本指向H列而非G列)。修复后的代码如下:
function SubmitData01() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var formSS = ss.getSheetByName("Input"); var datasheet = ss.getSheetByName("Trades"); var valueToWrite = formSS.getRange("I6").getValue(); // 获取G列所有行的数值(从第1行到工作表最大行) var gColumnValues = datasheet.getRange(1, 7, datasheet.getMaxRows(), 1).getValues(); var firstEmptyRow = -1; // 遍历G列,找到第一个空白单元格对应的行号 for (var i = 0; i < gColumnValues.length; i++) { if (gColumnValues[i][0] === "") { firstEmptyRow = i + 1; // 转换为工作表的行号(数组索引从0开始) break; } } // 若G列无空白单元格,将内容追加到列的末尾 if (firstEmptyRow === -1) { firstEmptyRow = datasheet.getLastRow() + 1; } // 将内容写入G列的首个空白单元格 datasheet.getRange(firstEmptyRow, 7).setValue(valueToWrite); formSS.getRange('C6:F6').clearContent(); }
关键修改说明
- 修正列号:原脚本中
datasheet.getRange(..., 8, ...)指向的是H列(第8列),改为7对应G列 - 精准定位首个空白单元格:通过遍历G列所有单元格,从上到下找到第一个空值的位置,解决了原脚本只能写入列末尾的问题
- 边界处理:当G列所有单元格都有内容时,自动将内容追加到列的最后一行
- 性能优化:单个值写入使用
setValue(),比原脚本的二维数组setValues()更简洁高效
内容的提问来源于stack exchange,提问作者Lucy C
相关产品推荐
相关产品推荐

