为何代码返回三维数组?如何获取目标二维B-C-D数组?
解决Google Apps Script中getValues返回数组维度误解的问题
哈哈,这种低级错误我也犯过!先别急,咱们来理清楚这件事:
问题回顾
你原本想通过代码获取表格里3行1列区域的值,代码如下:
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Example"); var rng = sheet.getRange(2,1,3); var rngVls = rng.getValues(); Logger.log(rng.getValue()); // log1 Logger.log(rngVls); // log2 Logger.log(rngVls[0]); // log3
你预期的输出是:
log1 = Bravo
log2 = [[Bravo],[Charlie],[Delta]]
log3 = Bravo
但你看到了维度异常的结果,一度困惑不已。
问题根源
正如你后来发现的——你看错了输出窗口!你把Running transcript当成了真正的Logs窗口。Running transcript的输出格式会额外嵌套数组,导致看起来维度不对,但实际上你的代码完全没问题,逻辑是正确的。
正确结果验证
当你打开正确的日志窗口(通过View > Logs或者快捷键Ctrl+Enter/Cmd+Enter),会看到完全符合预期的输出:
rng.getValue()返回区域左上角的单个值Bravorng.getValues()返回你想要的二维数组[[Bravo],[Charlie],[Delta]]- 这里补充个小细节:
rngVls[0]实际会取到数组的第一行[Bravo],如果要直接拿到单个值Bravo,需要写成rngVls[0][0]哦
小提示
以后查看Google Apps Script的执行结果时,一定要认准Logs窗口,Running transcript更多是记录执行的过程步骤,输出格式和真实日志有差异,很容易误导人。
内容的提问来源于stack exchange,提问作者user10989138
相关产品推荐
相关产品推荐

