同一Google Sheets脚本适配双标签报错:范围坐标超出工作表维度
问题修复方案
错误原因
你硬编码了固定范围
A1:C1000,抛出错误的标签页实际总行数不足1000,调用getRange时请求的范围超过了工作表的实际尺寸,所以触发坐标越界错误。另一个标签页行数≥1000因此可以正常运行。
修复方案
将固定范围替换为动态获取工作表实际有内容的范围,同时可以合并重复逻辑简化代码,修复后的完整代码如下:
function onEdit(event) { var sheet = event.source.getActiveSheet(); var editedCell = sheet.getActiveCell(); // 合并目标工作表判断,减少重复代码 var targetSheets = ["Successful Guide Searches", "Failed Guide Searches"]; if (targetSheets.includes(sheet.getName()) && editedCell.getColumn() == 2) { var lastRow = sheet.getLastRow(); // 空表直接返回,避免无数据时触发错误 if (lastRow < 1) return; // 动态获取A-C列所有有内容的范围,适配任意行数的工作表 var range = sheet.getRange(1, 1, lastRow, 3); range.sort([{ column: 2, ascending: false }, { column: 3, ascending: true }]); } }
可选调整
如果你的工作表存在不需要参与排序的表头,将getRange(1, 1, lastRow, 3)的第一个参数改为2,即可从第2行开始选取排序范围。
内容的提问来源于stack exchange,提问作者Orcinus
相关产品推荐
相关产品推荐

