如何创建动态下拉列表在谷歌Apps脚本(how to create dynamic dropdown

2019-06-25 23:47发布

我想动态改变在使用谷歌Apps脚本在谷歌电子表格的单元格验证功能候选名单的价值。

我未能使用谷歌公式功能谷歌的电子表格创建动态下拉列表。 在Excel中,有可能在使用INDIRECT函数在下拉列表功能的工作原理小区集中Excel电子表格,指的电池,其被动态设置列表区域名称的值。

Answer 1:

不幸的是这是不可能的管理使用Google Apps脚本细胞验证。 有一个增强打开请求,关于这一点。 你应该加上星跟踪更新和亲切的为它投票。

此外,Excel的间接功能不适用于谷歌电子表格的工作。



Answer 2:

时代变了看到这篇博客文章

我的电子表格的例子,可以使用一些改进

博客文章的简单方法来做到这一点。 我的代码起动器

function loadMenu() {
  var ga = SpreadsheetApp.getActive();

  var firstMenu = 'B3:B4';
  var firstValues = 'E3:F3';
  var staticValue1 = 'E3';
  var staticValue2 = 'F3';

  var secondMenu = 'C';
  var secondMenuRow = 3;
  var secondMenu1 = 'E4:E';
  var secondMenu2 = 'F4:F';

  dynamicDrop(ga, firstMenu, firstValues, staticValue1, staticValue2, secondMenu, secondMenuRow, secondMenu1, secondMenu2);

}


function dynamicDrop(ga, fm, fv, sv1, sv2, sm, smr, sm1, sm2) {

  //first drop choices
  var cells = ga.getRange(fm);
  var range = ga.getRange(fv);
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
  cells.setDataValidation(rule);

  // set as static value
  var staticVar1 = ga.getRange(sv1).getValue();

  // set as static value
  var staticVar2 = ga.getRange(sv2).getValue();

  // set to chosen value of fm
  var chosenVar1 = ga.getRange(fm).getValues();

  for (var row in chosenVar1) {

    for (var col in chosenVar1[row]) {

      if (chosenVar1[row][col] == staticVar1) {

        num = parseInt(row) + smr;
        var cells = ga.getRange(sm+num);
        var range = ga.getRange(sm1);
        var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
        cells.setDataValidation(rule);

      } else if (chosenVar1[row][col] == staticVar2) {

        num = parseInt(row) + smr;
        var cells = ga.getRange(sm+num);
        //range is Static values
        var range = ga.getRange(sm2);
        var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range).build();
        cells.setDataValidation(rule);

      }
    }
  }
}


文章来源: how to create dynamic dropdown list in the Google apps script