Javascript 在google应用程序脚本中组合两个onEdit()函数
我有两个简单的脚本,两个基于google sheet中的两个不同数据源创建一个动态相关下拉列表。在我的工作表中,B列中的值取决于A,I列中的值取决于H。如果我运行一个脚本,则第二个脚本不起作用。我知道我必须将它们合并到一个函数中,但我完全不懂JavaScript,所以我问你这个问题Javascript 在google应用程序脚本中组合两个onEdit()函数,javascript,google-apps-script,Javascript,Google Apps Script,我有两个简单的脚本,两个基于google sheet中的两个不同数据源创建一个动态相关下拉列表。在我的工作表中,B列中的值取决于A,I列中的值取决于H。如果我运行一个脚本,则第二个脚本不起作用。我知道我必须将它们合并到一个函数中,但我完全不懂JavaScript,所以我问你这个问题 函数onEdit(){ var tabLists=“source1”; var tabValidation=“main”; var ss=SpreadsheetApp.getActiveSpreadsheet().
函数onEdit(){
var tabLists=“source1”;
var tabValidation=“main”;
var ss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var DATAS=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(表格列表);
var activeCell=ss.getActiveCell();
如果(activeCell.getColumn()==1&&activeCell.getRow()>1&&ss.getSheetName()==tabValidation){
activeCell.offset(0,1.clearContent().clearDataValidations();
var makes=datass.getRange(1,1,1,datass.getLastColumn()).getValues();
var makeIndex=makes[0].indexOf(activeCell.getValue())+1;
如果(makeIndex!=0){
var validationRange=datass.getRange(3,makeIndex,datass.getLastRow());
var validationRule=SpreadsheetApp.newDataValidation().requireRewageInRange(validationRange.build();
activeCell.offset(0,1).setDataValidation(validationRule);
}
}
}
试试这个:
function onEdit(e){
var sh=e.range.getSheet();
if(e.range.columnStart==1 && e.range.rowStart>1 && sh.getName()=='main'){
var srcsh=e.source.getSheetByName('source1');
e.range.offset(0,1).clearContent().clearDataValidations();
var makes=srcsh.getRange(1, 1, 1, srcsh.getLastColumn()).getValues();
var makeIndex=makes[0].indexOf(e.value)+1;
if(makeIndex!=0){
var validationRange=srcsh.getRange(3, makeIndex,srcsh.getLastRow());
var validationRule=SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
e.range.offset(0,1).setDataValidation(validationRule);
}
}
if(e.range.columnStart==8 && e.range.rowstart>1 && sh.getName()=='MAINTENANCE'){
var srcsh=e.source.getSheetByName('source2');
e.range.offset(0,1).clearContent().clearDataValidations();
var makes=srcsh.getRange(1,1,1,srcsh.getLastColumn()).getValues();
var makeIndex=makes[0].indexOf(e.value()) + 1;
if(makeIndex!=0){
var validationRange=srcsh.getRange(3,makeIndex,srcsh.getLastRow());
var validationRule=SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build();
e.range.offset(0, 1).setDataValidation(validationRule);
}
}
}
我不确定一个简单的触发器是否能在这里工作,因为您正在更改用户数据。因此,您需要一个可安装的触发器,在这种情况下,您不想再将其命名为OneEdit,因为它们将被触发两次。一次使用简单触发器,一次使用可安装触发器。您的问题可能更适合链接处的谷歌应用程序脚本社区: