【问题标题】:I want to create a dropdown list with the data available on another sheet我想用另一张纸上的可用数据创建一个下拉列表
【发布时间】:2017-05-23 07:30:44
【问题描述】:

我想用另一张纸上的可用数据创建一个下拉列表

function dropOrderStatus() {
  var cell = SpreadsheetApp.getActive().getRange('B12');
  var orderStatusRange = SpreadsheetApp.openById("1sO_M9H7CrCevNrKCr0eimxb9lmY458NeyNHTf8RpS60").getNamedRanges('countryList');
  var orderStatus = SpreadsheetApp.newDataValidation().requireValueInRange(orderStatusRange).build();
  cell.setDataValidation(countryList);

}

【问题讨论】:

  • 你能花点时间写一个真实而清晰的问题,包括介绍、你的问题和你的代码示例吗?
  • 我有 2 个单独的电子表格,一个包含数据表,另一个是要完成的表格。我想在表单的单元格中创建一个下拉列表,它将使用数据表中的数据。
  • 下面是我使用的代码。它第一次工作,但现在返回错误 => 数据验证规则参数无效。
  • 我认为您的问题出在“cell.setDataValidation(countryList);”上,您没有声明 countryList 变量。

标签: javascript google-apps-script


【解决方案1】:

您不能那样使用 getNamedRanges。你得到所有的命名范围,然后遍历它们。然后你就可以分配规则了。

function dropOrderStatus() {
  var cell = SpreadsheetApp.getActive().getRange('B12');
  var orderStatusRange = SpreadsheetApp.openById("1sO_M9H7CrCevNrKCr0eimxb9lmY458NeyNHTf8RpS60").getNamedRanges();

  var namedRanges = [];
  for(var i = 0; i < orderStatusRange.length; i++) {
    namedRanges.push(orderStatusRange[i].getRange());
  }

  //I have no idea what your named ranges look like so you will need to modify this.
  //It only takes the first named ranged in the array of named ranges
  //If you want a dropdown for this you need to set it up differently
  var rule = SpreadsheetApp.newDataValidation().requireValueInRange(namedRanges[0]).build();

  cell.setDataValidation(rule);
}

作为旁注,我在网上商店发布了一个免费插件,用于构建此类下拉菜单,我希望得到反馈。我不知道链接到此类内容的规则是什么,但您可以通过搜索“Multi Dropdowns”轻松找到它

【讨论】:

  • 感谢@JordanRhea 的回答。它满足了我的要求。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-11-19
  • 2021-12-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多