Заполните две проверки данных одновременно с помощью ГАЗА - PullRequest
0 голосов
/ 07 июля 2019

У меня есть скрипт, который динамически заполняет данные проверки в столбце E, используя значения из другого листа. Я пытаюсь изменить этот сценарий так, чтобы он одновременно заполнял ДВА проверки данных (столбец D & E). ИЛИ просто заполните столбец E, если активная ячейка находится в столбце C ИЛИ столбце D. Как правило, заполняйте проверку данных столбца E независимо от того, имеет ли столбец D значение.

  // Populate Task data validations based on 4 column criteria
  // Column A = Selected Category
  // Column B = Selected Sub-Category
  // Column C = Selected Item
  // Column D = Selected Sub-Item

  if(activeCell.getColumn() == 4 && activeCell.getRow() > 1){

    if(e.range.getSheet().getName() != 'task-itemAssociations') return;


    activeCell.offset(0, 1).clearDataValidations();

    var task = taskDVss.getRange(activeCell.getRow(),activeCell.getColumn(),taskss.getLastColumn()).getValues();
    var taskIndex = task[0].indexOf(activeCell.getValue()) + 2;

    if(taskIndex != 0){

      var taskValidationRange = taskDVss.getRange(activeCell.getRow(),5,1,taskDVss.getLastColumn());

      var taskValidationRule = SpreadsheetApp.newDataValidation().requireValueInRange(taskValidationRange).build();

      activeCell.offset(0, 1).setDataValidation(taskValidationRule);
    }
  }

Вот мой лист и мой сценарий

1 Ответ

0 голосов
/ 07 июля 2019

Наконец-то придумали, что, кажется, делает свое дело. Не уверен, что это самый упрощенный метод, но пока он работает.

  // Populate sub-item data validations

  if(activeCell.getColumn() == 3 && activeCell.getRow() > 1){

    if(e.range.getSheet().getName() != 'task-itemAssociations') return;


    activeCell.offset(0, 1).clearDataValidations();

    var subItem = taskSubItemDVss.getRange(activeCell.getRow(),activeCell.getColumn(),itemss.getLastColumn()).getValues();
    var subItemIndex = subItem[0].indexOf(activeCell.getValue()) + 2;

    if(subItemIndex != 0){

      var subItemValidationRange = taskSubItemDVss.getRange(activeCell.getRow(),4,1,taskSubItemDVss.getLastColumn());

      var subItemValidationRule = SpreadsheetApp.newDataValidation().requireValueInRange(subItemValidationRange).build();

      activeCell.offset(0, 1).setDataValidation(subItemValidationRule);
    }

    var task = taskDVss.getRange(activeCell.getRow(),activeCell.getColumn(),taskss.getLastColumn()).getValues();
    var taskIndex = task[0].indexOf(activeCell.getValue()) + 2;

    if(taskIndex != 0){

      var taskValidationRange = taskDVss.getRange(activeCell.getRow(),5,1,taskDVss.getLastColumn());

      var taskValidationRule = SpreadsheetApp.newDataValidation().requireValueInRange(taskValidationRange).build();

      activeCell.offset(0, 2).setDataValidation(taskValidationRule);
    }

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