Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在google应用程序脚本中组合两个onEdit()函数_Javascript_Google Apps Script - Fatal编程技术网

Javascript 在google应用程序脚本中组合两个onEdit()函数

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().

我有两个简单的脚本,两个基于google sheet中的两个不同数据源创建一个动态相关下拉列表。在我的工作表中,B列中的值取决于A,I列中的值取决于H。如果我运行一个脚本,则第二个脚本不起作用。我知道我必须将它们合并到一个函数中,但我完全不懂JavaScript,所以我问你这个问题

函数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,因为它们将被触发两次。一次使用简单触发器,一次使用可安装触发器。

您的问题可能更适合链接处的谷歌应用程序脚本社区: