使用Google Apps Script修改谷歌表格每第三行行高时遇报错求助
问题分析与解决
错误原因
setRowHeight是Sheet对象的方法,不能通过Range对象调用,你当前用sheet.getRange(...).setRowHeight()属于调用对象错误,这是核心问题。- 就算用Sheet的
setRowHeight,你的参数也写错了,正确参数是行号和高度值,不需要额外传1。
修正后的代码
直接用Sheet对象的setRowHeight,循环里每次指定行号设置高度,更简洁高效:
function Height() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var totalRows = sheet.getMaxRows(); for (var i=3; i <= totalRows; i+=3){ // sheet.getRange(i, 1, 1, sheet.getMaxColumns()).setBackground("#F3F3F3"); sheet.setRowHeight(i, 200); // 直接通过Sheet对象设置行高 } }
如果非要通过Range对象操作,可以用setRowHeights(复数形式,参数为一维数组),写法如下:
function Height() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getActiveSheet(); var totalRows = sheet.getMaxRows(); var totalColumns = sheet.getMaxColumns(); for (var i=3; i <= totalRows; i+=3){ var range = sheet.getRange(i, 1, 1, totalColumns); // range.setBackground("#F3F3F3"); range.setRowHeights([200]); // 传入高度数组,对应Range里的行 } }
额外提示
- 循环操作行时,直接用Sheet的方法比先获取Range再操作更高效,尤其是行数较多的场景。
- 错误提示里的
autoResizeRows是Sheet的方法,同样不能通过Range对象调用,应该是你之前代码的残留内容。
内容的提问来源于stack exchange,提问作者TCW
相关产品推荐
相关产品推荐

