Как запустить этот скрипт на всех вкладках, кроме некоторых?

#javascript #google-apps-script #google-sheets

#javascript #google-apps-script #google-таблицы

Вопрос:

Я использую этот код для установки некоторых значений в зависимости от столбца, если дни <= -4

 function SetValues(){

  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var responses = ss.getSheetByName("tt");

  var data = responses.getRange(1,1,responses.getLastRow(),responses.getLastColumn()).getValues();

  data.forEach(function(row,i) {

    var date =      row [0];
    var nombre =    row [1];
    var pidePor =   row [2];
    var fechaFin =  row [3];
    var dias =      row [4];

    if (dias <= -4){

      var val = responses.getRange( i   1, 2).getValue();
      responses.getRange( i   1, 2).setValue(val);

      var val = responses.getRange( i   1, 3).getValue();
      responses.getRange( i   1, 3).setValue(val);

      var val = responses.getRange( i   1, 4).getValue();
      responses.getRange( i   1, 4).setValue(val);


    }

  });

}
  

Он отлично работает на указанной вкладке, но что мне нужно, так это иметь возможность запускать его на всех моих листах, исключая некоторые вкладки

Кто-нибудь может мне помочь, пожалуйста, как это сделать?

Я пытался часами, но безуспешно

Спасибо!

Ответ №1:

Все, что вам нужно сделать, это поместить его в функцию-оболочку

 numberAllTheSheets(){
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  sheets = ss.getSheets();
  for (i=0; i<sheets.length; i  ){//Avoids sheets named "sheet one" and "sheet four"
     if sheets[i].getName=="Sheet One") continue;
     if sheets[i].getName=="Sheet Four") continue;
     SetValues(sheets[i]);
     } 
  

А затем измените установленные значения на:

 function SetValues(responses){

  var data = responses.getRange(1,1,responses.getLastRow(),responses.getLastColumn()).getValues();

  data.forEach(function(row,i) {

    var date =      row [0];
    var nombre =    row [1];
    var pidePor =   row [2];
    var fechaFin =  row [3];
    var dias =      row [4];

    if (dias <= -4){

      var val = responses.getRange( i   1, 2).getValue();
      responses.getRange( i   1, 2).setValue(val);

      var val = responses.getRange( i   1, 3).getValue();
      responses.getRange( i   1, 3).setValue(val);

      var val = responses.getRange( i   1, 4).getValue();
      responses.getRange( i   1, 4).setValue(val);


    }

  });

}


}



}
  

Ответ №2:

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

 function runSetValuesExceptForSomeSheets(){
  var ss=SpreadsheetApp.getActive();
  var sheets=ss.getSheets();
  var excluded=['Sheet1','Sheet4'];//add names of sheets that are excluded
  for (i=0;i<sheets.length;i  ) {
    if(excluded.indexOf(sheets[i].getName())==-1) {
      var sheet=sheets[i];
      var data=sheet.getDataRange().getValues();
      for(var j=0;j<data.length;j  ) {
        if(data[i][4]<=4) {
          var valA=sheet.getRange(i   1,2,1,3).getValues();//This makes no sense
          sheet.getRange(i 1,2,1,3).setValues(valA);//This makes no sense
        }
      }
    } 
  }
}