我想获取多个值,因此请使用 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 = Bravo
- log2 = [[Bravo],[Charlie],Δ]
- log3 = Bravo
但是意外的尺寸如下所示。我不明白为什么。
- log1 = [Bravo,[]]
- log2 = [[[Bravo],[Charlie],Δ],[]]
- log3 = [[Bravo],[]]
请帮助我,我如何获得二维B-C-D阵列?
uhhhhhh很抱歉浪费您的时间,这只是我的愚蠢错误。 我读的不是“日志”,而是“正在运行的成绩单”。 我得到了我想要的,谢谢大家的好意。我很沮丧,让代码。
答案 0 :(得分:1)
getValues()
返回2D数组。不要依靠将对象记录到日志来确定其属性。而是使用适当的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()
返回所引用范围的左上角值。相关