【问题标题】:How to automatically set a value in drop-down list based on a value from another drop-down list如何根据另一个下拉列表中的值自动设置下拉列表中的值
【发布时间】:2020-03-21 20:59:20
【问题描述】:

我有一个包含 A - P 列的 googlesheet。B 列(GROUP)是一个下拉列表,N 列(执行状态)是一个下拉列表。我正在尝试根据我在 EXECUTION STATUS 下拉列表中选择的值自动在 GROUP 的单元格中设置特定值。

例如: GROUP 在下拉列表中有以下值:

开发者 质量保证 1 级支持 2 级支持

EXECUTION STATUS 在下拉列表中有以下值:

通过 失败的 未执行 已屏蔽

这是我想要发生的事情: 如果我选择 FAILED 作为 EXECUTION STATUS,我希望 GROUP 自动更改为 DEVELOPER

这是我的功能:

function changeGroup(event)
{
  var ColN = 14;  // Column Number of "N"
  var changedRange = event.source.getActiveRange();
  if (changedRange.getColumn() == ColN) 
  {
    // An edit has occurred in Column N
    var state = changedRange.getValue();
    var Group = event.source.getActiveSheet().getRange(changedRange.getRow(),ColN-12);
    switch (state) 
    {
      case "FAILED":
        // Select DEVELOPER from dropdown list
        Group.setValue("Developer");
        break
      
    }
  }
}

我认为我的问题是 Group.setValue("Developer") 行。 SetValue 正在设置一个文本值。我正在尝试从下拉列表中设置一个值。我不知道。有什么建议吗?

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    数据验证规则区分大小写字母。我认为这可能是您的问题的原因。所以如果你的数据验证规则的值为大写字母DEVELOPER,请按如下方式使用。

    Group.setValue("DEVELOPER");
    

    注意:

    • 在你的脚本中,我认为可以使用简单触发器的OnEdit事件触发器。但是从您的脚本来看,您似乎正在使用可安装的事件触发器。所以请再次确认changeGroup的功能是否安装为可安装的OnEdit事件触发器。
    • 顺便说一下,如果要运行特定工作表的脚本,请修改if (changedRange.getColumn() == ColN)如下。

      if (changedRange.getColumn() == ColN && changedRange.getSheet().getSheetName() == "Sheet1")
      

    参考资料:

    如果我误解了您的问题并且这不是您想要的方向,我深表歉意。

    补充:

    在您的情况下,也可以使用简单触发器。那么如何测试以下脚本呢?当您使用此脚本时,请复制并粘贴以下脚本。然后,请更改“N”列的下拉列表。

    function onEdit(event)  // <--- Modified
    {
      var ColN = 14;  // Column Number of "N"
      var changedRange = event.source.getActiveRange();
      if (changedRange.getColumn() == ColN) 
      {
        // An edit has occurred in Column N
        var state = changedRange.getValue();
        var Group = event.source.getActiveSheet().getRange(changedRange.getRow(),ColN-12);
        switch (state) 
        {
          case "FAILED":
            // Select DEVELOPER from dropdown list
            Group.setValue("DEVELOPER");
            break
    
        }
      }
    }
    

    参考:

    【讨论】:

    • @April 感谢您的回复。我带来的不便表示歉意。我认为从您的脚本中,您正在使用可安装的 OnEdit 事件触发器。关于这一点,我的理解正确吗? Ref
    • 你的建议奏效了。我将第一行从函数 changeGroup(event) 更改为函数 onEdit(event)
    • @April 在您的情况下,也可以如上所述使用简单触发器。所以我又添加了一个修改过的脚本。你能确认一下吗?
    • 感谢您的帮助。修改后的脚本有效。
    • @April 欢迎。谢谢你让我知道。我很高兴你的问题得到了解决。如果您的问题得到解决,请按接受按钮。与您有相同问题的其他人也可以将您的问题作为可以解决的问题。我认为您的问题和解决方案将对他们有用。如果找不到按钮,请随时告诉我。 stackoverflow.com/help/accepted-answer
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多