【问题标题】:how to create dynamic dropdown list in the Google apps script如何在 Google Apps 脚本中创建动态下拉列表
【发布时间】:2012-07-03 11:43:33
【问题描述】:

我想使用 Google Apps 脚本在 Google 电子表格的单元格验证功能中动态更改候选列表的值。

我未能使用 Google 公式功能在 Google 电子表格中创建动态下拉列表。

【问题讨论】:

    标签: google-apps-script google-sheets


    【解决方案1】:

    您现在可以使用newDataValidation() 来构建数据验证规则。

    例子:

    // Set the data-validation rule for cell A1 to require a value from B1:B10.
    var cell = SpreadsheetApp.getActive().getRange('A1');
    var range = SpreadsheetApp.getActive().getRange('B1:B10');
    var rule = SpreadsheetApp.newDataValidation().requireValueInRange(range)
        .build();
    cell.setDataValidation(rule);
    

    来源:https://gsuite-developers.googleblog.com/2013/08/answering-another-top-request-data.html

    【讨论】:

      【解决方案2】:

      Times have changed see this blog post

      My spreadsheet example that could use some improvements

      博客文章提供了一种简单的方法。 我的代码启动器是

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-02-23
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多