简体   繁体   English

如何在所有选项卡中运行此脚本,但某些选项卡除外?

[英]How to run this script in all tabs, except some tabs?

Im using this code to set some values depending on a column if the days are <= -4 如果天数<= -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);


    }

  });

}

Its working fine in the referenced tab, but what I need is to be able to run it all over my sheets excluding some tabs 它在引用的选项卡中工作正常,但我需要的是能够在我的工作表上运行它,不包括一些选项卡

Anyone can help me please how to accomplish this ? 任何人都可以帮我,请问如何实现这一目标?

I've been trying for hours with no luck on this 我一直在努力工作几个小时而没有运气

Thanks ! 谢谢 !

All you need to do is put it in a wrapper function 您需要做的就是将它放在包装函数中

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

And then modify set values to: 然后将设置值修改为:

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


    }

  });

}


}



}

Try this: 尝试这个:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM