电子表格非相邻列数据

时间:2016-03-26 11:30:28

标签: google-apps-script google-sheets

我希望使用应用脚本从电子表格中获取数据。我试图从两个不相邻列的多行行中获取数据,但我无法使用以下语法执行此操作。说A1到A19和C1到C19。请告诉我代码是否有问题。 感谢。

data = sheet.getRange(" A1:A19"," C1:C19")。getValues();

4 个答案:

答案 0 :(得分:3)

最近,Class RangeList已添加到Google Apps脚本电子表格服务中,因此现在可以对非相邻的小区/范围进行一些操作。

而不是

data = sheet.getRange("A1:A19","C1:C19").getValues()

您可以使用类似

的内容
var data = [];
var ranges = sheet.getRangeList(["A1:A19","C1:C19"]).getRanges();
for(var i = 0; i < ranges.length; i++){
  data = Array.concat(data, ranges[i].getValues());
}

答案 1 :(得分:1)

您无法通过一次调用将两列中彼此不相邻的数据转换为单个数组。但你可以做如下的事情:

var range1=sheet.getRange("A1:A19").getValues();
  var range2=sheet.getRange("C1:C19").getValues();
  var range=[],i=-1;
  while ( range1[++i] ) { 
  range.push( [ range1[i][0], range2[i][0] ] );
}

其中范围将包含两列的内容。您使用的getRange()方法是incorrect

答案 2 :(得分:1)

大概一旦你提取了你想要的数据,你就会循环遍历它并用它做不同的事情。

您使用.getRange,它返回“range”类型的对象,以及.getValues,它返回该范围对象中的2D数组值。

那么为什么不只是获得整个范围然后只遍历你需要的值?

data = sheet.getRange("A1:C19").getValues();
for (i = 0; i < data[0].length; i++) {
  // do something with data[0][i]
  // do something with data[2][i]
}

答案 3 :(得分:1)

您可以获取所有范围并删除不需要的列。 改编自Alex Wayne(Deleting a column from a multidimensional array in javascript

var table = [
    ['a', 'b', '1', '5', '8'],
    ['c', 'd', '2', '6', '9'],
    ['f', 'g', '3', '7', '10']
];

var removeCol = function(arr, col1Index, col2Index) {
    for (var i = 0; i < arr.length; i++) {
        var row = arr[i];
        row.splice(col1Index, 1);
        row.splice(col2Index, 1);
    }
}

// remove more than one column - can remove as many columns as needed
// ATENTION: spreadsheet column start in 1 and arrays start in 0
// start removing from last to first columns
removeCol(table, 4, 2);

alert(table);