如何用Apps Script将单元格数据插入最后一行,出现Invalid argument错误如何解决
错误原因
- 核心触发报错的问题来自A列最后一行的计算逻辑:当「Master List」工作表的A列完全为空时,
getNextDataCell(Direction.UP)方法找不到有效数据单元格,就会抛出Exception: Invalid argument错误 - 代码中重复声明
dataToCopy变量属于冗余写法,虽不直接触发报错,但建议优化
修正后可用代码
function CopyandPaste() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName('Master List'); var dataToCopy = sheet.getRange('B3'); var sourceValues = dataToCopy.getValues(); // 稳妥计算A列最后一个非空行 var lastRowA = sheet.getLastRow(); // 循环排查A列最后非空行,兼容A列全空、A列中间有空行的场景 while (lastRowA > 0 && sheet.getRange("A" + lastRowA).isBlank()) { lastRowA--; } var targetRow = lastRowA + 1; sheet.getRange(targetRow, 1, sourceValues.length, sourceValues[0].length).setValues(sourceValues); dataToCopy.clear({contentsOnly:true}); }
优化说明
- 替换了原来的
getNextDataCell逻辑,改用循环向上排查A列非空行的方式,兼容A列全空、A列中间存在空行的所有场景,不会出现参数无效错误 - 删除了重复的
dataToCopy变量声明,简化代码逻辑
内容的提问来源于stack exchange,提问作者HSHO
相关产品推荐
相关产品推荐

