首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将数据从一个数组设置到另一个数组以提高性能

如何将数据从一个数组设置到另一个数组以提高性能
EN

Stack Overflow用户
提问于 2019-04-17 17:30:33
回答 1查看 34关注 0票数 0

我目前正在开发一个工作表,它基于一些过滤器显示一组数据的结果,但数据加载速度很慢。我尝试遵循Google Documentacion的最佳实践,但没有成功,我如何设置一个数组来加快数据加载速度?

下面是我已经尝试过的代码注释

代码语言:javascript
复制
function realizarBusqueda() {
  var inicio = SpreadsheetApp.getActive().getSheetByName("INICIO");
  var aux_tags = SpreadsheetApp.getActive().getSheetByName("Aux_Tags");
  var data = SpreadsheetApp.getActive().getSheetByName("Data");
  var data_lc = data.getLastColumn();
  var data_lr = data.getLastRow();
  var searchRange = data.getRange(2,1, data_lr, data_lc);
  var inicio_lc = inicio.getLastColumn();
  inicio.getRange("A8:L1000").clearContent();
  inicio.getRange("A8:L1000").clearFormat();
  var countRows = inicio.getMaxRows();
  inicio.deleteRows(20, (20-countRows)*-1);
  if (inicio.getRange("B4").isBlank()) {
    inicio.getRange("A8:L1000").clearContent();
    inicio.getRange("A8:L1000").clearFormat();
    var countRows = inicio.getMaxRows();
    inicio.deleteRows(20, (20-countRows)*-1);
    SpreadsheetApp.flush();
  }
  else if ((inicio.getRange("B4").getValue() != "" && 
           inicio.getRange("C4").getValue() === "")) {
    //filtrado 1
    var arrayDatos = searchRange.getValues();
    var inicio_fr = 8;
    //var row = new Array(11);
    for (var j = 2; j <= data_lr; j++) {
      //row[j] = new Array(data_lr);
      if (aux_tags.getRange("P2").getValue() === arrayDatos[j-2][4]) {
        var inicio_fc = 1;
        for (var i = 0; i < arrayDatos[j-2].length; i++) {
          //row[j][i] = arrayDatos[j-2][i];
          var row = arrayDatos[j-2][i];
          inicio.getRange(inicio_fr, inicio_fc).setValue(row);
          inicio_fc++;
        }
        inicio_fr++;
      }
      //inicio.getRange("A8").setValues(row);
    }
  }

我希望输出加载得更快,目前我尝试的是注释,代码按原样工作,但速度太慢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-17 22:31:05

我只是想更新这个主题,因为我自己搞清楚了,请参阅附件中使用新的二维数组的新代码

代码语言:javascript
复制
    ...
    //filtrado 1
    var arrayDatos = searchRange.getValues();
    var inicio_fr = 8;
    var rows = [];
    var row = [];
    for (var j = 2; j <= data_lr; j++) {
      if (aux_tags.getRange("P2").getValue() === arrayDatos[j-2][4]) {
        var inicio_fc = 1;
        for (var i = 0; i < arrayDatos[j-2].length; i++) {
          row.push(arrayDatos[j-2][i]);
          if (i == 11) {
            rows.push(row);
            row = [];
          }
        }        
      }
    }
    inicio.getRange(8, 1, rows.length, rows[0].length).setValues(rows);   
  }

现在,我不是一次写一行,而是一次写整个数组

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55724343

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档