Merge two onEdit with if functions?

匆匆过客 提交于 2020-07-10 10:26:52

问题


I have script for Google Sheets that I collected on interwebs and got some help here. No I have 2 onEdit in conflict. I overcome that by creating script Trigger for onEdit2. It works but I don't think it is the best solution. Could you help get those two separated onEdit with if functions into one, please?

//Dependent Dropdown list
function onEdit(e){ // Function that runs when we edit a value in the table.
  masterSelector(master1,master2,master3,master4);
  var activeCell = e.range; // It returns the coordinate of the cell that we just edited.
  var val = activeCell.getValue(); // Returns the value entered in the column we just edited.
  var r = activeCell.getRow(); // returns the row number of the cell we edit.
  var c = activeCell.getColumn(); // returns the column number of the cell we edit.

  var wsName = activeCell.getSheet().getName();
  if (wsName === masterWsName && c === firstLevelColumn && r > masterNumberOfHeaderRows) { // the if delimits the section sensitive to modification and action of the onEdit.
    applyFirstLevelValidation(val,r);
  } else if (wsName === masterWsName && c === secondLevelColumn && r > masterNumberOfHeaderRows){
      applySecondLevelValidation(val,r);
    }
} // end of onEdit

// addRow by checkboxes 
function onEdit2(e) {
    masterSelector(master1,master2,master3,master4);
  //IF the cell that was edited was in column 4 = D and therefore a checkbox AND if the cell edited was checked (not unchecked):
  if (e.range.columnStart === 4 && e.range.getValue() === true) {
    var sheet = SpreadsheetApp.getActiveSheet(),
        row = sheet.getActiveCell()
        .getRow(),
        //(active row, from column, numRows, numColumns)
        rangeToCopy = sheet.getRange(row, 1, 1, 30);
    sheet.insertRowAfter(row);
    rangeToCopy.copyTo(sheet.getRange(row + 1, 1));
    //Reset checked boxes in column 4
    sheet.getRange(row,4,2,1).setValue(false);
  }
}

Whole script is here, if needed.


回答1:


Rename your first the onEdit function to onEdit1 (actually it will be better to assign a descriptive name), then add the following function:

function onEdit(e){
  onEdit1(e);
  onEdit2(e);
}

Related

  • How to run multiple onEdit functions in the same google script (google sheets)?
  • Bracketing multiple onEdit functions
  • Best Practices for Multiple OnEdit Functions


来源:https://stackoverflow.com/questions/62602747/merge-two-onedit-with-if-functions

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!