Скрыть строку, когда сумма диапазона равна нулю - PullRequest
0 голосов
/ 10 января 2019

В приведенном ниже коде я хочу вычислить сумму диапазона, а затем скрыть одну или несколько строк, если сумма равна нулю (или диапазон пуст).

Код выполняется, но не показывает ожидаемый результат, поскольку строки не скрываются, когда в диапазоне все листы пустые.

function Ocultar() {  
    var ss = SpreadsheetApp.getActiveSheet();   
    var sum = 0;   
    var range = ss.getRange('Z3:AA10');   
    for(var i in range[0]){   
        sum += range[0][i];   
    }   
    return sum   
    if (sum = 0){   
        ss.getRange('3:10').activate();   
        ss.getActiveSheet().hideRows(ss.getActiveRange().getRow(), ss.getActiveRange().getNumRows());   
    }   
};

1 Ответ

0 голосов
/ 10 января 2019

Попробуйте это:

function Ocultar(displaydata) {  
  var displaydata=displaydata || true;//change this to false to avoid displaying data by default
  var ss = SpreadsheetApp.getActive();   
  var sh=ss.getActiveSheet();
  var sum=0;   
  var rg=sh.getRange('Z3:AA10');   
  //var rg=sh.getRange('A3:J10');//used for debug
  //rg.setBackground('#ffff00');//used for debug
  var vA=rg.getValues();
  var n=0;//total count
  var nA=0;//string
  var n1=0;//numbers
  var nU=0;//undefined
  var nBlank=0;//blanks
  var typeA=[];
  var isBlank=false;
  for(var i=0;i<vA.length;i++){
    for(var j=0;j<vA[i].length;j++){
      isBlank=false;
      n++;
      switch(typeof(vA[i][j])) {
        case "number":     
          n1++;
          sum+=vA[i][j];
          break;
        case "string":
          nA++;
          if(vA[i][j].length==0){
            nBlank++;
            isBlank=true;
          }
          break;
        case "undefined":
          nU++;
          break;
      }
      var typeObj={n:n,nA:nA,n1:n1,nU:nU,nBlank:nBlank,type:typeof(vA[i][j]),value:vA[i][j],isBlank:isBlank?"TRUE":"FALSE"};
      typeA.push(typeObj);
    }
  }
  if (sum==0 || n==nBlank){   
    sh.hideRows(3, 8);
  }
  if(displaydata){
    var html='';
    for(var i=0;i<typeA.length;i++){
      html+=Utilities.formatString('<br />n: %s, nA: %s n1: %s nU: %s nBlank:%s typeof: %s value: %s isBlank: %s',typeA[i].n,typeA[i].nA,typeA[i].n1,typeA[i].nU,typeA[i].nBlank,typeA[i].type,typeA[i].value,typeA[i].isBlank);
    }
    html+=Utilities.formatString('<br />Sum: %s Cells: %s Strings: %s Numbers: %s Undefined: %s Blanks: %s',sum,n,nA,n1,nU,nBlank);
    var userInterface=HtmlService.createHtmlOutput(html).setWidth(1000).setHeight(500);
    SpreadsheetApp.getUi().showModelessDialog(userInterface, 'Ocultar');
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...