【问题标题】:Why does this code return 3-dimensional array为什么此代码返回 3 维数组
【发布时间】:2019-06-23 14:19:35
【问题描述】:

我想获取多个值,所以使用 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],[Charlie],[Delta]]
  • log3 = 棒棒哒

但意外的维度如下所示。我不明白为什么。

  • log1 = [Bravo,[]]
  • log2 = [[[Bravo],[Charlie],[Delta]],[]]
  • log3 = [[Bravo],[]]

请帮帮我,我怎样才能得到一个二维 B-C-D 数组?


-添加了道歉-

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

【问题讨论】:

  • 提供Logger.log(rngVls.length)Logger.log(rngVls[0].length)
  • 使用四参数签名,即2, 1, 3, 1?

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


【解决方案1】:

getValues() 正在返回一个二维数组。不要依赖将对象记录到日志中来确定其属性。而是使用适当的 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 开发者工具的控制台。

相关

【讨论】:

  • 谢谢,您的评论让我注意到我阅读了一些不同的文字。 (内容也是很大的好处)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-09-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-16
相关资源
最近更新 更多