如何从电子表格的列中获取值数组?

时间:2014-04-26 11:24:23

标签: google-apps-script google-sheets

getSheetValues(1, 1, maxRows, 1)

返回一个包含1个或没有元素的maxRows数组 如果我将maxRow设置为5并且我在前3行(1,2和3)中有值,我将得到一个Object [] []

[[1.0], [2.0], [3.0], [], []]

所以我写了一些测试代码

function stripArray(arr){
  return arr.map(function(t){if(t.length){return t[0];}else{return undefined;} }).filter(function(n){ return n != undefined });
}

function testArray(){
  var arr=[[1.0], [2.0], [3.0], [], []];
  var strippedArr = stripArray(arr);
  Logger.log(strippedArr);
}

它就像一个魅力和日志

[1.0, 2.0, 3.0]

然后我的烦恼开始了。我写了一个函数来处理工作表。

function testSheet(){
  var ssId="XXX";
  var ss = SpreadsheetApp.openById(ssId);
  var sheet = ss.getSheetByName("YYY");
  var values = sheet.getSheetValues(1, 1, maxPortalToDeQueue, 1);
  Logger.log(values);
  Logger.log(stripArray(values));
}

我得到了一些疯狂的价值

[[1.0], [2.0], [3.0], [], []]
[1.0, 2.0, 3.0, , ]

有人可以帮我理解这种行为并获取我正在寻找的数据吗?

1 个答案:

答案 0 :(得分:2)

虽然[]看起来应该有一个长度0,但它实际上是1,但没有内容。请改用它。

function stripArray(values) {
  return values.filter(function(d) {
    return d.length && d[0] !== '';
  });
}