Google Sheets脚本传入工作表名调用getRangeByName返回null问题
问题根因
getRangeByName() 方法的作用是获取 Google Sheets 中预先定义的命名范围(Named Range),入参需要是命名范围的名称,而非工作表的名称。你传入工作表名称后,只要该工作簿内没有创建和工作表名完全一致的命名范围,返回结果自然为 null,后续调用 getNumRows() 等方法就会抛出异常。
解决方案
如果你的需求是获取当前活动工作表的全部内容,有两种常用实现方式:
- 方式一:使用
getDataRange()直接获取工作表内所有包含内容的单元格范围(推荐,自动适配实际有数据的区域) - 方式二:手动构造全工作表范围(包含所有空白单元格)
修正后的可运行代码如下:
function TestMacro() { var cellVal = SpreadsheetApp.getActiveSheet().getActiveCell().getValue(); SpreadsheetApp.getUi().alert(FindIdenticalValue(cellVal)); } function FindIdenticalValue(cellVal) { var activeSheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); // 方式一:获取实际有数据的范围 var range = activeSheet.getDataRange(); // 如果需要取整个工作表的所有单元格(包括空白),替换为下行代码 // var range = activeSheet.getRange(1, 1, activeSheet.getMaxRows(), activeSheet.getMaxColumns()); var rowCount = range.getNumRows(); var colCount = range.getNumColumns(); return true; }
内容的提问来源于stack exchange,提问作者cadsharp
相关产品推荐
相关产品推荐

