У меня есть столбец «C» с правилами проверки данных, которые меняются в зависимости от содержимого в столбце «A». Столбец C отклонит недопустимые записи, но оставит недопустимую запись, если значение было там до того, как был изменен столбец A. Я хочу очистить ячейку в столбце C, если она содержит недопустимые данные, но оставить ее, если существующее значение является допустимым в новых правилах проверки.
Я прочитал, что не существует команды для определения наличия данныхв ячейке недопустимо, но вы можете выполнить обратный инжиниринг проверки, сравнив диапазон проверки данных со значением. Я пробовал разные способы сравнить мое значение с моим диапазоном проверки, но не смог.
function onEdit(){
var ss = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("AllStaff");
var activeCell = ss.getActiveCell();
var datass = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("CategoryValidation");
if(activeCell.getColumn() == 19 && activeCell.getRow() > 3){
activeCell.offset(0, 2).clearDataValidations();
var category = datass.getRange(1, 1, 1, datass.getLastColumn()).getValues();
var categoryIndex = category[0].indexOf(activeCell.getValue()) + 1;
var validationRange = datass.getRange(3, categoryIndex, datass.getLastRow())
var validationRule = SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).setAllowInvalid(false).setHelpText("Please choose from list").build();
activeCell.offset(0, 2).setDataValidation(validationRule);
var checkValidation = activeCell.offset(0,2).getValue();
I have tried things like:
var validationIndex = validationRange.indexOf(checkValidation);
var validationIndex = validationRange[0].indexOf(checkValidation);
var validationIndex = validationRange[0].getRowIndex(checkValidation);
Я ожидал получить индекс с номером 0 или больше, если значение checkValidation находится в моем validationRange и -1, если это не так (поэтому я могу применить оператор If, чтобы очистить данные, если index === - 1). Вместо этого я получаю сообщения об ошибках типа: TypeError: Невозможно вызвать метод indexOf из неопределенного. (строка 25, файл "Код") TypeError: Невозможно вызвать метод "getRowIndex" из неопределенного. (строка 25, файл "Код") Уволить