Это похоже на ошибку и, вероятно, о ней следует сообщить здесь . Я попробовал ваш подход, а также явно определил диапазон, но он последовательно заменяет критерии 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);
}