将细胞范围存储到阵列

Aar*_*ron 2 spreadsheet google-sheets google-apps-script

如果我在单元格A1:A150中有一个数据列表(但数量可以变化),有没有办法将其推入数组而不单独查看每个单元格以确定它是否为空?我通过这样做超过了我的执行时间,我需要一种更快的方式来存储数据并在它遇到空单元格时停止.

以下是我目前的工作方式.我是新来的.

for (var i = 1; i < 500; i++) {
  if(datasheet.getRange("A" + i).getValue() == ""){
   break;   
  }

  else{
     addedlist_old.push(datasheet.getRange("A" + i).getValue())
    }
Run Code Online (Sandbox Code Playgroud)

k4k*_*sh1 8

如果您只使用一列,我建议:

  // my2DArrayFromRng = sh.getRange("A2:A10").getValues();
  var my2DArrayFromRng = [["A2"],["A3"],["A4"],["A5"],[],[],["A8"],["A9"],[]];
  var a = my2DArrayFromRng.join().split(',').filter(Boolean);
Run Code Online (Sandbox Code Playgroud)

方法.join().split(',')一起将2D数组转换为普通数组(["A2","A3","A4","A5",,,"A8","A9") ,]).然后方法.filter(Boolean)剥离空元素.上面的代码返回[A2,A3,A4,A5,A8,A9].


Suy*_*dhi 5

尝试这个:

    var sheet = SpreadsheetApp.openById(SHEET_ID).getSheetByName(SHEET_NAME);
    var lastRow = sheet.getLastRow();

    var data = sheet.getRange(1, 1, lastRow, 1).getValues(); //getRange(starting Row, starting column, number of rows, number of columns)

    for(var i=0;i<(lastRow-1);i++)
    {
      Logger.log(data[0][i]);
    }
Run Code Online (Sandbox Code Playgroud)

变量数据存储列A的所有单元格。

单元格A1存储在数据[0] [0]中,单元格A2存储在数据[0] [1]中,单元格A3存储在数据[0] [2]中,依此类推。

getRange(起始行,起始列,行数,列数)是一个批处理操作,它的速度要快得多,当你有一个大的数据集。