sid*_*dlo 1 javascript triggers google-sheets google-apps-script
我有在互联网上收集的 Google Sheets 脚本,并在这里获得了一些帮助。不,我有两个onEdit
冲突。我通过为onEdit2
. 它有效,但我不认为这是最好的解决方案。您能帮忙将这两个函数onEdit
用 if 函数合二为一吗?
//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);
}
}
Run Code Online (Sandbox Code Playgroud)
如果需要的话,整个脚本都在这里。
脚本不能包含两个同名的函数。将第一个onEdit
函数重命名为onEdit1
(实际上分配一个描述性名称会更好),将第二个函数重命名为onEdit2
,然后将它们放在一个名为 的函数中onEdit
,并将参数传递e
给它们:
function onEdit(e){
onEdit1(e);
onEdit2(e);
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
660 次 |
最近记录: |