仅在一个选项卡上的动作脚本

时间:2019-09-23 19:47:51

标签: google-apps-script google-sheets

试图使脚本仅在一个选项卡上运行,而不影响所有选项卡-由于某种原因,该脚本似乎在多个选项卡上产生了影响。

尝试声明选项卡的名称,在这种情况下为:
“ 1。计划”
但它崩溃了,尝试运行脚本时出现错误。有什么想法吗?

function onEdit(){

  var ss = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("3. Current_Team")

  var activeCell = ss.getActiveCell();

  if(activeCell.getColumn() == 4 && activeCell.getRow() > 1){

    activeCell.offset(0, 1).clearContent().clearDataValidations();

      var makes = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();

      var makeIndex = makes[0].indexOf(activeCell.getValue()) + 1;

        if(makeIndex != 0) {

      var validationRange = datass.getRange(3, makeIndex, datass.getLastRow());
      var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
      activeCell.offset(0, 1).setDataValidation(validationRule);

  }

}
}


1 个答案:

答案 0 :(得分:1)

尝试一下:

function onEdit(e){ 
  var sh=e.range.getSheet();
  if(sh.getName()!='1. Scheduling')return;
  var datash=e.source.getSheetByName("3. Current_Team")
  if(e.range.columnStart==4 && e.range.rowStart>1){
    e.range.offset(0, 1).clearContent().clearDataValidations();
    var makes=datash.getRange(1, 1, 1, datash.getLastColumn()).getValues();
    var makeIndex=makes[0].indexOf(e.value) + 1;
    if(makeIndex != 0) {
      var validationRange = datash.getRange(3, makeIndex, datash.getLastRow());
      var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
      e.range.offset(0, 1).setDataValidation(validationRule);
    }
  }
}