【发布时间】:2017-05-26 23:30:16
【问题描述】:
我正在使用:
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
【问题讨论】:
-
我建议您查看DataValidation 和DataValidationBuilder 以了解验证在您的代码中是如何工作的。它提供了一些示例代码来了解如何使用它。关于下拉菜单的问题,请尝试检查这些问题Data Validation using Apps Script 和dependent drop downs in Google Sheets? 是否可以帮助您。
-
感谢您的建议。虽然这个脚本似乎在我的测试表中工作,但它在其他工作表中不起作用。数据验证部分是正确的,但我认为主要问题是:“.getRange(changedRange.getRow(),ColA+2,changedRange.getColumn(),10);”我相信我需要使用不同的方法来设置源范围。
标签: google-apps-script google-sheets