0
我使用:数据验证脚本
function datavalidation(event) {
var ColA = 1;
var changedRange = event.source.getActiveRange();
if (changedRange.getColumn() == ColA) {
var destinationRange = event.source.getActiveSheet().getRange(changedRange.getRow(),ColA+1);
var sourceRange = event.source.getActiveSheet().getRange(changedRange.getRow(),ColA+2,changedRange.getColumn(),10);
var rule = SpreadsheetApp.newDataValidation().requireValueInRange(sourceRange).build();
var rules = destinationRange.getDataValidations();
for (var i = 0; i < rules.length; i++) {
for (var j = 0; j < rules[i].length; j++) {
rules[i][j] = rule;
}
}
destinationRange.setDataValidations(rules);
}
}
塔1被编辑时创建在第2栏的下拉菜单。它在大多数情况下工作正常,但是当我从列2中删除任何数据验证时,它正在做一些意想不到的事情。当我这样做时,它可能永远不会,它会在第2列的第一行上运行脚本,即使我做了不要更改第1列。只是试图了解这里发生了什么。由于
见公开文档浏览:https://docs.google.com/spreadsheets/d/1kYncT7bOYWp73yr3Lh4LQreTpRFc8lZL3siqpP4xsvA/edit?usp=sharing
我建议你检查这[资料验证(https://developers.google.com/apps-script/reference/spreadsheet/data-validation)和[DataValidationBuilder(https://developers.google .com/apps-script/reference/spreadsheet/data-validation-builder)来了解验证如何在你的代码中工作。它提供了一些示例代码来了解如何使用它。对于有关下拉菜单的问题,请尝试检查这些问题[数据验证使用应用程序脚本](http://stackoverflow.com/questions/17686068)和[在Google表格中依赖下拉菜单?](http://stackoverflow.com/questions/21744547)如果它可以帮助你。 – KENdi
感谢您的建议。虽然这个脚本似乎在我的测试表中工作,但在其他工作表中不起作用。数据valadation部分是正确的,但我认为主要问题是这样的:“.getRange(changedRange.getRow(),ColA + 2,changedRange.getColumn(),10);”我相信我需要使用不同的方法来设置源范围。 – user2969867