Google apps script 电子表格非相邻列数据

Google apps script 电子表格非相邻列数据,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我需要使用应用程序脚本从电子表格中获取数据。我试图从两个非相邻列的多行中获取数据,但无法使用以下语法。说A1到A19,C1到C19。如果代码有问题,请告诉我。 谢谢 data=sheet.getRange(“A1:A19”、“C1:C19”).getValues() 不能通过一次调用将不相邻的两列数据获取到单个数组中。但你可以做如下事情: var range1=sheet.getRange("A1:A19").getValues(); var range2=sheet.getRange("C

我需要使用应用程序脚本从电子表格中获取数据。我试图从两个非相邻列的多行中获取数据,但无法使用以下语法。说A1到A19,C1到C19。如果代码有问题,请告诉我。 谢谢


data=sheet.getRange(“A1:A19”、“C1:C19”).getValues()

不能通过一次调用将不相邻的两列数据获取到单个数组中。但你可以做如下事情:

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()方法是。

假设一旦提取了所需的数据,您将循环使用它并使用它执行不同的操作

您使用了
.getRange
,它返回类型为“range”的对象,以及
.getValues
,它返回该range对象内的二维值数组

那么,为什么不直接获取整个范围,然后只循环您需要的值呢

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]
}
data=sheet.getRange(“A1:C19”).getValues();
对于(i=0;i
最近,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());
}
var数据=[];
var ranges=sheet.getRangeList([“A1:A19”,“C1:C19”]).getRanges();
对于(变量i=0;i
您可以获取所有范围并删除不需要的列。 来自Alex Wayne的补充()

var表=[
[a',b',1',5',8'],
[c',d',2',6',9'],
[f',g',3',7',10']
];
var removeCol=函数(arr、col2Index、col2Index){
对于(变量i=0;i
非常感谢。这是完美的工作,有没有任何限制。推功能上面提到的?我的意思是我可能需要添加多达100列,我尝试了以下两列:var range1=sheet.getRange(“A1:A19”).getValues();var range2=sheet.getRange(“C1:C19”).getValues();var range3=sheet.getRange(“D1:D19”).getValues();变量范围=[],i=-1;虽然(range1[++i]){range.push([range1[i][0],range2[i][0],range3[i][0]];}这是可能的,但不是最有效的方法。您也可以单独使用这些范围。如果答案有效,请将其标记为正确。我想创建一个谷歌折线图,其中a列包含日期,B列包含数据。我将从谷歌电子表格中获取数据。我希望图表是动态的,如果我提到数据行A1:A100和B1:B100,我不希望绘制数据,除非它在工作表中可用。i、 e.如果数据仅来自A1:A50和B1:B50,则图表不应包含数据点A51:A100和B51:B100。但是,当某些数据写入第51行时,数据点应自动出现在第51行的折线图上。谢谢。
alert
不是一个有效的Google Apps脚本核心函数-它仅作为UI类的一个方法提供。它是按行添加数据,我们如何获得一个列为所述范围的数组?@AashitGarodia请发布一个新问题。
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);