Как создать второй динамический зависимый раскрывающийся список в скрипте приложения Google Sheets? - PullRequest
1 голос
/ 18 октября 2019

Я запустил Google Sheet с 4 выпадающими списками. Раскрывающиеся меню 2, 3 и 4 зависят от выбора в раскрывающемся списке 1. У меня работает раскрывающийся список 2, но я не могу обработать код в редакторе сценариев приложений для раскрывающихся списков 3 и 4.

Это мой лист с названием«Выпадающие списки»:

Dropdown List

Строка 1 находится в раскрывающемся списке 1 (столбец C таблицы «Событие / происшествия»)

Строки с 4 по 10 находятся враскрывающийся список 2 (столбец D таблицы «Событие / происшествия»)

Строки 15 до конца строки находятся в раскрывающихся списках 3 (столбец E таблицы «Событие / происшествия»), а также в раскрывающемся списке 4 (столбец Fлиста «События / происшествия») Это лист «События / происшествия».

Events/Incidents

У меня есть следующий код, который работает для раскрывающегося списка 2 (столбец DТолько лист событий / инцидентов):

App Script Code

Буду очень признателен за помощь с остальным кодом.

Ответы [ 2 ]

2 голосов
/ 20 октября 2019

Я рекомендую посмотреть следующее видео, а затем загрузить демонстрационный скрипт. Ваш запрос каскадных динамических выпадающих меню, верно?

https://youtu.be/rW9T4XZy-7U

1 голос
/ 18 октября 2019

Для того, чтобы адаптировать ваш скрипт и создать дополнительные выпадающие меню, вам необходимо

  • создать дополнительные правила проверки
  • с настроенными диапазонами проверки
  • настроить смещениев соответствии с положением, в которое должно быть вставлено раскрывающееся меню.

Пример:

      var validationRange2=datass.getRange(15,baseIndex,datass.getLastRow());
      var validationRule2=SpreadsheetApp.newDataValidation().requireValueInRange(validationRange2).build()
      activeCell.offset(0,2).setDataValidation(validationRule2);

Полный код будет:

function onEdit() {
 var tablists="Dropdown Lists";
  var tabValidation="Events/Incidents";
  var ss=SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var datass=SpreadsheetApp.getActiveSpreadsheet().getSheetByName(tablists);
  var activeCell=ss.getActiveCell();
  if(activeCell.getColumn()==3&&activeCell.getRow()>1&&ss.getSheetName()==tabValidation){
    activeCell.offset(0,1).clearContent().clearDataValidations();
    var base=datass.getRange(2,1,1,5).getValues();
    var baseIndex=base[0].indexOf(activeCell.getValue())+1;
    Logger.log(baseIndex);
    if(baseIndex!=0){
      var validationRange=datass.getRange(3,baseIndex,10);
      var validationRule=SpreadsheetApp.newDataValidation().requireValueInRange(validationRange).build()
      activeCell.offset(0,1).setDataValidation(validationRule);

      var validationRange2=datass.getRange(15,baseIndex,datass.getLastRow());
      var validationRule2=SpreadsheetApp.newDataValidation().requireValueInRange(validationRange2).build()
      activeCell.offset(0,2).setDataValidation(validationRule2);
      activeCell.offset(0,3).setDataValidation(validationRule2);

    }
  }
}

Чтобы лучше понять код, обратитесь к учебнику по приложениям Script и

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