为什么此代码返回3维数组

时间:2019-01-30 10:22:08

标签: javascript arrays multidimensional-array google-apps-script google-sheets

我想获取多个值,因此请使用 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阵列?


添加的APOLOGY-

uhhhhhh很抱歉浪费您的时间,这只是我的愚蠢错误。 我读的不是“日志”,而是“正在运行的成绩单”。 我得到了我想要的,谢谢大家的好意。我很沮丧,让代码。

1 个答案:

答案 0 :(得分:1)

getValues()返回2D数组。不要依靠将对象记录到日志来确定其属性。而是使用适当的JavaScript 1.6方法,例如typeofinstanceof,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]]

注意:

  1. getValue()返回所引用范围的左上角值。
  2. Google Apps脚本IDE不具备其他功能,例如Google Chrome开发者工具的控制台。

相关