Как сохранить исходный диапазон при обновлении правила проверки данных с помощью скрипта Google Apps - PullRequest
0 голосов
/ 06 июля 2018

Я пытаюсь написать скрипт приложений Google, который обновляет существующее правило проверки данных, чтобы включить параметр «Показать раскрывающийся список в ячейке». У меня он в основном работает, он меняет опцию «Показать выпадающий список в ячейке», но не сохраняет первоначальный диапазон критериев, который находится на другом листе. Похоже, что меняется диапазон для использования листа, с которого было получено правило проверки, вместо другого листа. Для проверки исходных данных требуется значение в диапазоне Sheet2!A2:A, но когда я запускаю приведенный ниже сценарий, вместо него требуется значение в диапазоне Base!A2:A.

function turnOffDropDown()  {
    var baseSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base");
    var templateRange = baseSheet.getRange("B2");
    var rule = templateRange.getDataValidation();
    var criteria = rule.getCriteriaType();
    var args = rule.getCriteriaValues();
    args[1] = false;
    var newRule = rule.copy().withCriteria(criteria, args).build();
    templateRange.setDataValidation(newRule);
}

Я делаю что-то не так, что он не сохраняет исходный диапазон, есть ли способ указать нужный диапазон на Sheet2 или есть другой способ обновить опцию «Показать выпадающий список в ячейке»?

1 Ответ

0 голосов
/ 06 июля 2018

Это похоже на ошибку и, вероятно, о ней следует сообщить здесь . Я попробовал ваш подход, а также явно определил диапазон, но он последовательно заменяет критерии sheet на лист, к которому применяется проверка, при сохранении указанных ячеек. (Например, проверка применяется к Worksheet!C1, поэтому CriteriaValues!A1:10 становится Worksheet!A1:10.)

В качестве обходного пути, учитывая, что вы, вероятно, не меняете тип критерия, вы можете вместо этого попытаться создать новую проверку, используя requireValueInRange(). Я изменил ваш код, чтобы создать опцию «Toggle Dropdown». Это поддерживает правильный диапазон.

function toggleDropDown()  {
  var baseSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Base");
  var templateRange = baseSheet.getRange("B1");
  var rule = templateRange.getDataValidation();
  var args = rule.getCriteriaValues();
  rule = SpreadsheetApp.newDataValidation().requireValueInRange(args[0], !args[1]).build();
  templateRange.setDataValidation(rule);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...