javascript - 为什么此代码返回 3 维数组
问题描述
我想获取多个值,所以使用getValues但它返回数组意外维度。
在下面的代码中,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
我期望得到如下结果。log2 是我想要得到的。
- log1 = 好极了
- log2 = [[Bravo],[查理],[Delta]]
- log3 = 好极了
但意外的维度如下所示。我不明白为什么。
- log1 = [布拉沃,[]]
- log2 = [[[Bravo],[查理],[Delta]],[]]
- log3 = [[布拉沃],[]]
请帮帮我,我怎样才能得到一个二维 BCD 阵列?
-添加了道歉-
uhhhhhh 我很抱歉浪费你的时间,这只是我的愚蠢错误。我读的不是“日志”,而是“运行成绩单”。我得到了我想要的,谢谢大家的好意。我感觉很沮丧让代码。
解决方案
getValues()
正在返回一个二维数组。不要依赖将对象记录到日志中来确定其属性。而是使用适当的 JavaScript 1.6 方法,如typeof
, instanceof
, JSON.stringify(object) 等。
例子:
function logSomeThings(){
var sheet = SpreadsheetApp.getActiveSheet();
var rng = sheet.getRange(2,1,3);
var rngVls = rng.getValues();
Logger.log('log1 %s', typeof rng.getValue());
Logger.log('log2 %s', rngVls instanceof Array);
Logger.log('log3 %s', rngVls[0] instanceof Array);
Logger.log('log4 %s', typeof rngVls[0][0]);
Logger.log('log5 %s', typeof rngVls[0][0][0]);
}
结果
[19-01-31 10:32:24:187 CST] log1 number
[19-01-31 10:32:24:188 CST] log2 true
[19-01-31 10:32:24:189 CST] log3 true
[19-01-31 10:32:24:189 CST] log4 number
[19-01-31 10:32:24:190 CST] log5 undefined
关于 JSON.stringify(rngVls);
Logger.log('log6 %s', JSON.stringify(rngVls));
记录这样的事情
[19-01-31 11:02:20:061 CST] log6 [[1],["#N/A"],[2]]
笔记:
getValue()
返回引用范围的左上角值。- Google Apps Script IDE 不具备与其他工具(如 Google Chrome 开发者工具的控制台)相同的功能。
有关的