Вот код:
var sheet = spreadsheet.getSheetByName("Timesheet");
sheet.getRange('B27').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(false)
.requireValueInRange(spreadsheet.getRange('TaskItems'), true)
.build());
Приведенный выше код успешно создает раскрывающееся меню проверки данных в ячейке B27, которое соответствует именованному диапазону «TaskItems».Однако правило проверки данных, создаваемое сценарием приложения, использует фактический адрес «TaskItems» (C2: 1300), а не сам «TaskItems».Поэтому, если я обновлю адрес именованного диапазона «TaskItems» до D2: 1300, то мои правила проверки данных больше не будут работать, потому что они по-прежнему используют C2: 1300.
Я могу установить правила проверки данных вручную для каждогоячейка в именованный диапазон «TaskItems», и все отлично работает, даже когда «TaskItems» меняется.Однако я не могу заставить скрипт приложения использовать фактический именованный диапазон в правиле, а не адрес именованного диапазона при создании правила.
Я попытался отключить объект диапазона строкой, подобнойтак:
var sheet = spreadsheet.getSheetByName("Timesheet");
sheet.getRange('B27').setDataValidation(SpreadsheetApp.newDataValidation()
.setAllowInvalid(false)
.requireValueInRange('TaskItems', true)
.build());
, но я получаю сообщение об ошибке, в котором requireValueInRange не принимает строку.
Кто-нибудь знает, как заставить скрипт приложения использовать фактический именованный диапазон в правиле проверки данных