从属下拉列表

时间:2019-12-09 21:14:28

标签: google-apps-script google-sheets drop-down-menu scripting

我目前正在设计一个依赖的下拉列表,该列表是使用间接函数设置的。在“ I”列中,我有一个由“ Livery”和“ Operator”组成的下拉列表,从属下拉列表在“ K”列中,该列列出了取决于选择了Livery还是Operator的相关详细信息。

但是,我要在“ I”列的下拉列表中添加一个第三项,即“名称”,但是如果选择此项,我希望这需要在“ K”列中手动输入-是否有可能如果选择了Livery或Operator,那么表格会给我一个依赖的下拉列表,如果选择了名称,则为我提供了一个手动输入的空白​​单元格。

1 个答案:

答案 0 :(得分:1)

可以使用Apps脚本并编写脚本来解决您的问题。

第一个功能是使用.newDataValidation()方法使用所需的值创建下拉菜单。

function createDropdown() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var rangeRule = SpreadsheetApp.newDataValidation().requireValueInList(['Livery','Operator','Name'],true).build();
  ss.getRange('I1').setDataValidation(rangeRule);
}

第二个功能将根据来自I cell的选择来更新K cell

//the installable trigger 
function onEditTrigger(e) {
    var sheet = e.range.getSheet();
    var cellValue = e.range.getValue();
    var liveryOptions = ['livery1', 'livery2', 'livery3', 'livery4'];
    var operatorOptions = ['operator1', 'operator2', 'operator3', 'operator4'];

    if (cellValue == 'Name') {
      SpreadsheetApp.getUi().alert('Input your name in the K1 cell');
      sheet.getRange("K1").setDataValidation(null);
      sheet.getRange("K1").clear();
      sheet.getRange("K1").setBackground("yellow");
    } else if (cellValue == 'Operator') {
      sheet.getRange("K1").setBackground("white").setValue("Choose an option");
      var dataValidation = SpreadsheetApp.newDataValidation().requireValueInList(operatorOptions, true).build();
      sheet.getRange("K1").setDataValidation(dataValidation);
    } else if (cellValue == 'Livery') {
      sheet.getRange("K1").setBackground("white").setValue("Choose an option");
      var dataValidation = SpreadsheetApp.newDataValidation().requireValueInList(liveryOptions, true).build();
      sheet.getRange("K1").setDataValidation(dataValidation);
    }
}

为了使您的下拉选择起作用,您应该在第二个功能中添加一个installable trigger

您可以转到项目的触发器并使用以下属性创建新的触发器:

enter image description here

运行脚本时,只需运行createDropdown()函数,因为触发器将在后台连续运行。

以下是脚本的工作方式:

何时选择Livery

enter image description here

{strong> Name 被选中 Alert prompt 将出现,要求用户在单元格上输入数据 >

enter image description here

enter image description here

此外,以下一些链接可能会对您有所帮助:

  1. Installable Triggers;

  2. DataValidation Class;

  3. Apps Script