簡體   English   中英

如何將數據從數組設置為另一個數組以提高性能

[英]How to set data from an array to another array to improve performance

我目前正在開發一個工作表,顯示基於某些過濾器的一組數據的結果,但是在獲得結果時數據加載緩慢,我試圖遵循Google Documentacion的最佳實踐而沒有運氣,我該如何設置一個數組加載數據加快?

下面的代碼評論了我已經嘗試過的內容

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);
    }
  }

我希望輸出加載更快,目前我已經嘗試過評論,代碼按原樣工作但速度太慢

我只是想更新這個主題,因為我想出了自己,看到使用新的2D數組附加新代碼

    ...
    //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);   
  }

現在我不是一次寫一行,而是一次寫完整個數組

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM