我有一张工作表,人们可以复制/粘贴值。这导致他们绕过数据验证,因为它只是“警告”它们而不是拒绝该值。
我想在工作表中找到具有数据验证的所有范围。试图在参考指南中找到一些东西,但似乎唯一的方法是循环遍历每个单元格并检查其数据验证?
如果某人有更有效的方式来检查这一点,那会很棒。
答案 0 :(得分:1)
你需要一个循环,但不需要遍历单元格(每个单元格需要API调用getDataValidation
),而不是getDataValidations返回的双数组:
var sheet = SpreadsheetApp.getSheetByName("Sheet1");
var range = sheet.getRange(1, 1, sheet.getMaxRows(), sheet.getMaxColumns());
var rules = range.getDataValidations();
for (var i = 0; i < rules.length; i++) {
for (var j = 0; j < rules[0].length; j++) {
if (rules[i][j]) {
// do something with the cell
}
}
}
没有更直接的方法,例如getNamedRanges
或getProtections
。
可能的解决方法:为要验证的范围指定名称,以便您可以使用getNamedRanges
检索它们。