相当于getDataRange()来获取带有数据验证的范围?

时间:2017-07-17 07:54:43

标签: google-apps-script google-sheets

我有一张工作表,人们可以复制/粘贴值。这导致他们绕过数据验证,因为它只是“警告”它们而不是拒绝该值。

我想在工作表中找到具有数据验证的所有范围。试图在参考指南中找到一些东西,但似乎唯一的方法是循环遍历每个单元格并检查其数据验证?

如果某人有更有效的方式来检查这一点,那会很棒。

1 个答案:

答案 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
    }
  }
}

没有更直接的方法,例如getNamedRangesgetProtections

可能的解决方法:为要验证的范围指定名称,以便您可以使用getNamedRanges检索它们。