当前位置: 首页 > 知识库问答 >
问题:

如何在GoogleSheets应用程序脚本中创建第二个动态相关下拉列表?

袁俊弼
2023-03-14

我已经开始了一个有4个下拉列表的谷歌表。下拉列表2、3和4都取决于下拉列表1中的选择。我有下拉2工作,但不能在应用程序脚本编辑器的代码下拉3和4。

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

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

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

最后一行的第15行在下拉列表3中(事件/事件表的E列)

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

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

共有1个答案

苏晓博
2023-03-14

为了调整脚本并创建其他下拉菜单,您需要

  • 创建其他验证规则
  • 具有调整的验证范围
  • 根据应插入下拉菜单的位置调整偏移量

样本:

      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);

    }
  }
}

要更好地理解代码,请参阅应用程序脚本文档和教程

 类似资料:
  • 我在谷歌工作表中有一个下拉菜单,它引用了不同工作表中的值。 参考表A行值1,B行值1:Value1\u说明值2:Value2\u说明。 在我的工作表中,单元格中有一个下拉菜单,用于设置和显示值1、值2等。 我希望下拉菜单显示参考表Value1:Value1_说明、Value2:Value2_说明等中的显示名称,但仅将Value1 Value2等设置为单元格中的值。 确实如此,但是在谷歌的表单中ht

  • 根据第一个下拉列表项选择,我希望第二个下拉列表应该包含相关内容。在Java怎么能这样?例如,假设第一个下拉列表包含国家名称,第二个下拉列表包含国家名称。如果我从第一个下拉列表中选择一个特定的国家,比如“印度”,那么第二个列表应该只显示国家的相关邦,即“印度”的邦。并且这两个列表都是动态的。

  • 问题内容: react-bootstrap站点中的示例代码显示以下内容。我需要使用数组来驱动选项,但是在查找将要编译的示例时遇到了麻烦。 问题答案: 您可以从这两个功能开始。第一个将基于传递到页面的道具动态创建您的选择选项。如果将它们映射到状态,则选择将自行重新创建。 然后,您将在render内部拥有此代码块。您将传递一个对onChange道具的函数引用,每次调用onChange时,所选对象将自动

  • 如何让子类别列根据在google sheets的主类别下拉列表中选择的值填充下拉列表? 我谷歌了一下,找不到任何好的解决方案,所以我想分享我自己的。请看下面我的回答。

  • 想改进这个问题吗 通过编辑此帖子,更新问题,使其只关注一个问题。 我正在android studio中使用java创建一个电子商务应用程序。我想创建一个多选下拉列表,用户可以从中选择一个或多个尺寸。我想填写包含MySQL数据库中所有大小的下拉列表。有谁能告诉我怎么做,或者给我建议一些教程,因为我现在还没有得到。

  • 我的谷歌表单使用了用户马克斯·马克洛夫(Max Makhrov)编写的代码,这里的代码,在D-F列(用于位置)和H-L列(用于目标)中创建多个相关的动态下拉列表 我想帮助修改脚本以完成两件事: 无论从第一列的下拉菜单中选择了什么活动,我都希望J-L列可以使用相同的下拉菜单选项(重复)。正如您所看到的,我找到了一种方法,但对我来说,它似乎笨重且不理想,并且为错误留下了太多的空间。用户不应该选择活动两