Как я могу скрыть отображение столбцов таблицы Google на основе значения ячейки с проверкой данных? - PullRequest
0 голосов
/ 06 мая 2019

Я довольно новичок в скрипте Google, но я хотел написать несколько скриптов, чтобы улучшить мой опыт работы с Google. Сценарий работал довольно хорошо - хотя и довольно медленно - до тех пор, пока электронная таблица не стала заполнена формулами и вкладками, и с тех пор функции onEdit перестали выполняться через 35 секунд, как правило, и, таким образом, не делали все столбцы отображения и скрытия. Я уверен, что есть гораздо лучший способ написания кода, который также работает быстрее. Чего я хочу добиться, так это того, что на основе изменяющегося значения ячейки выпадающего меню определенный набор столбцов будет скрыт, а другие видимы. Что зависит от выбора выпадающей ячейки.

Будем благодарны за любые подсказки по улучшению кода и его ускорению.

Заранее спасибо

var VCO = [1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1];
  var VW1=[0,1,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,1,1,1,0,0,0,0,0,1,0,1,1];
  var VW2=[0,0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VW3=[0,0,0,1,0,0,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VW4=[0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VP1=[0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VA1=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VW5=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VW6=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VW7=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VW8=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VP2=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VA2=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VW9=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var V10=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var V11=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var V12=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VP3=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,1,1,0,1,1,1,0,0,0,0,1,1,0,1,1];
  var VA3=[0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0,1,0,0,0,0,0,0,1,1,1,0,0,0,0,0,0,0,1,1];


function onEdit(e) {

  var ss=SpreadsheetApp.getActive();
  var sh=ss.getActiveSheet();

  if (e.range.getA1Notation() === "BX2") {

    var vl=sh.getRange("BX2").getValue();
    var j=11;

    switch(vl)
    {
    case "COMM":
      for(var i=0;i<67;i++){
        if(VCO[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;    
    case "W1":
      for(var i=0;i<67;i++){
        if(VW1[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W2":
      for(var i=0;i<67;i++){
        if(VW2[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W3":
      for(var i=0;i<67;i++){
        if(VW3[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W4":
      for(var i=0;i<67;i++){
        if(VW4[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;    
    case "PRE JAN":
      for(var i=0;i<67;i++){
        if(VP1[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break; 
    case "ACT JAN":
      for(var i=0;i<67;i++){
        if(VA1[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;  
    case "W5":
      for(var i=0;i<67;i++){
        if(VW5[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;  
    case "W6":
      for(var i=0;i<67;i++){
        if(VW6[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W7":
      for(var i=0;i<67;i++){
        if(VW7[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W8":
      for(var i=0;i<67;i++){
        if(VW8[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "PRE FEB":
      for(var i=0;i<67;i++){
        if(VP2[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "ACT FEB":
      for(var i=0;i<67;i++){
        if(VA2[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W9":
      for(var i=0;i<67;i++){
        if(VW9[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W10":
      for(var i=0;i<67;i++){
        if(V10[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W11":
      for(var i=0;i<67;i++){
        if(V11[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "W12":
      for(var i=0;i<67;i++){
        if(V12[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "PRE MAR":
      for(var i=0;i<67;i++){
        if(VP3[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    case "ACT MAR":
      for(var i=0;i<67;i++){
        if(VA3[i]==1){
          sh.showColumns(i+j);
        }
        else{
        sh.hideColumns(i+j);
        }
      }
      break;
    }
  }
...