Google Apps Script中getRange未返回完整数据 语法问题求解
问题描述
使用Google Apps Script构建Web应用时,在主.gs文件中编写loadBoats()函数,意图获取关联电子表格内指定范围(共4列)的数值并返回,但函数实际运行后仅返回范围第1列的数值,无法定位代码错误。
原实现代码
function loadBoats(){ var ss = SpreadsheetApp.openByUrl("* myspreadSheet url*"); var ws = ss.getSheetByName("DB1.vessels"); var boats = ws.getRange(1,1,ws.getRange("A1:D12").getDataRegion().getLastRow(),1).getValues(); Logger.log(boats); return boats; }
错误原因
4参数版本的Sheet.getRange()方法参数顺序固定,从左到右依次为:
- 起始行号:选取范围的左上角所在行
- 起始列号:选取范围的左上角所在列
- 选取行数:从起始行开始向下覆盖的总行数
- 选取列数:从起始列开始向右覆盖的总列数
原代码中getRange传入的最后一个参数(选取列数)为1,代表仅从起始列(A列)开始选1列,最终只会拿到A列数据,和预期要取4列的需求不符。
修正方案
将getRange的第4个参数从1改为4(对应A到D共4列)即可,优化可读性后的修正代码如下:
function loadBoats(){ var ss = SpreadsheetApp.openByUrl("* myspreadSheet url*"); var ws = ss.getSheetByName("DB1.vessels"); // 提取最后一行变量提升可读性,列数参数改为4对应A-D共4列 var lastRow = ws.getRange("A1:D12").getDataRegion().getLastRow(); var boats = ws.getRange(1, 1, lastRow, 4).getValues(); Logger.log(boats); return boats; }
内容的提问来源于stack exchange,提问作者Brittan M. S. Breaux
相关产品推荐
相关产品推荐

