我想动态改变在使用谷歌Apps脚本在谷歌电子表格的单元格验证功能候选名单的价值。
我未能使用谷歌公式功能谷歌的电子表格创建动态下拉列表。 在Excel中,有可能在使用INDIRECT函数在下拉列表功能的工作原理小区集中Excel电子表格,指的电池,其被动态设置列表区域名称的值。
我想动态改变在使用谷歌Apps脚本在谷歌电子表格的单元格验证功能候选名单的价值。
我未能使用谷歌公式功能谷歌的电子表格创建动态下拉列表。 在Excel中,有可能在使用INDIRECT函数在下拉列表功能的工作原理小区集中Excel电子表格,指的电池,其被动态设置列表区域名称的值。
不幸的是这是不可能的管理使用Google Apps脚本细胞验证。 有一个增强打开请求,关于这一点。 你应该加上星跟踪更新和亲切的为它投票。
此外,Excel的间接功能不适用于谷歌电子表格的工作。
时代变了看到这篇博客文章
我的电子表格的例子,可以使用一些改进
博客文章的简单方法来做到这一点。 我的代码起动器
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);
}
}
}
}