【问题标题】:How do you create a second dynamic dependant dropdown in Google Sheets App Script?如何在 Google Sheets App Script 中创建第二个动态相关下拉列表?
【发布时间】:2019-10-17 21:10:27
【问题描述】:

我创建了一个有 4 个下拉菜单的 Google 表格。下拉菜单 2、3 和 4 都取决于下拉菜单 1 中的选择。我已经让下拉菜单 2 工作,但无法在应用脚本编辑器中为下拉菜单 3 和 4 计算代码。

这是我的标题为“下拉列表”的工作表:

第 1 行位于下拉列表 1 中(“事件/事件”表的 C 列)

第 4 到 10 行位于下拉列表 2(“事件/事件”表的 D 列)

第 15 行到最后一行位于下拉列表 3(“事件/事件”表的 E 列)和下拉列表 4(“事件/事件”表的 F 列)中 这是“事件/事件”表。

我有以下代码仅适用于下拉列表 2(“事件/事件”表的 D 列):

非常感谢您对其余代码的帮助。

【问题讨论】:

    标签: javascript google-apps-script google-sheets


    【解决方案1】:

    为了调整您的脚本并创建额外的下拉菜单,您需要

    • 创建额外的验证规则
    • 调整后的验证范围
    • 根据下拉菜单的插入位置调整偏移量。

    示例:

          var validationRange2=datass.getRange(15,baseIndex,datass.getLastRow());
          var validationRule2=SpreadsheetApp.newDataValidation().requireValueInRange(validationRange2).build()
          activeCell.offset(0,2).setDataValidation(validationRule2);
    

    完整的代码是:

    function onEdit() {
     var tablists="Dropdown Lists";
      var tabValidation="Events/Incidents";
      var ss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
      var datass=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tablists);
      var activeCell=ss.getActiveCell();
      if(activeCell.getColumn()==3&&activeCell.getRow()>1&&ss.getSheetName()==tabValidation){
        activeCell.offset(0,1).clearContent().clearDataValidations();
        var base=datass.getRange(2,1,1,5).getValues();
        var baseIndex=base[0].indexOf(activeCell.getValue())+1;
        Logger.log(baseIndex);
        if(baseIndex!=0){
          var validationRange=datass.getRange(3,baseIndex,10);
          var validationRule=SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build()
          activeCell.offset(0,1).setDataValidation(validationRule);
    
          var validationRange2=datass.getRange(15,baseIndex,datass.getLastRow());
          var validationRule2=SpreadsheetApp.newDataValidation().requireValueInRange(validationRange2).build()
          activeCell.offset(0,2).setDataValidation(validationRule2);
          activeCell.offset(0,3).setDataValidation(validationRule2);
    
        }
      }
    }
    

    为了更好地理解代码,请参考Apps脚本documentation和tutorials

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-15
      • 1970-01-01
      • 1970-01-01
      • 2012-07-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多