Как удалить существующие данные из ячейки, если она не соответствует правилу проверки данных - PullRequest
0 голосов
/ 01 октября 2019

У меня есть столбец «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, файл "Код") Уволить

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...