Попытка обновить динамический выпадающий код для поддержки двух столбцов, зависящих от одного и того же столбца. - PullRequest
0 голосов
/ 09 апреля 2019

Я пытаюсь создать трекер с двумя выпадающими столбцами, которые зависят от одного и того же столбца. Например, я предоставляю 3 разных сервиса клиентам, и у каждого сервиса есть свой тип поддержки и результат. Когда выбран один из сервисов, я бы хотел, чтобы столбцы поддержки и итоговых данных заполнялись элементами, относящимися к этому сервису.

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

Я нашел и пытаюсь манипулировать кодом, используемым в этом посте, Как вы выполняете динамические / зависимые выпадающие списки в Google Sheets? .

Я создал второй раздел, чтобы получить выпадающие списки результатов. Вот пример документа о том, чего я смог достичь, https://docs.google.com/spreadsheets/d/1KmET4ilVqxGQwnIKGGo2hPFxWcQCtrXta-z8OHJT_5c/edit?usp=sharing

Спасибо!

function onEdit() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sheet = SpreadsheetApp.getActiveSheet();
  var myRange = SpreadsheetApp.getActiveRange();
  var dvSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("Dropdowns");
  var option = new Array();
  var startCol = 0;

   // Dynamic dropown for Support Provided
  if(sheet.getName() == "Tracker" && myRange.getColumn() == 3 && myRange.getRow() > 1){  
    if(myRange.getValue() == "Credit"){
      startCol = 3;
    } else if(myRange.getValue() == "Legal"){
      startCol = 4;
    } else if(myRange.getValue() == "Housing"){
      startCol = 5;
    } else {
      startCol = 6
    }

  if(startCol > 0 && startCol < 6){
    option = dvSheet.getSheetValues(3,startCol,6,1);
    var dv = SpreadsheetApp.newDataValidation();
    dv.setAllowInvalid(false);  
    //dv.setHelpText("Some help text here");
    dv.requireValueInList(option, true);
    sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).setDataValidation(dv.build());
   }

  if(startCol == 6){
    sheet.getRange(myRange.getRow(),myRange.getColumn() + 1).clearDataValidations();
  } 
  } 

     // Dynamic dropdown for Outcome
  if(sheet.getName() == "Tracker" && myRange.getColumn() == 3 && myRange.getRow() > 1){  
    if(myRange.getValue() == "Credit"){
      startCol = 7;
    } else if(myRange.getValue() == "Legal"){
      startCol = 8;
    } else if(myRange.getValue() == "Housing"){
      startCol = 9;
    } else {
      startCol = 10
    }

  if(startCol > 6 && startCol < 10){
    option = dvSheet.getSheetValues(6,startCol,10,1);
    var dv = SpreadsheetApp.newDataValidation();
    dv.setAllowInvalid(false);  
    //dv.setHelpText("Some help text here");
    dv.requireValueInList(option, true);
    sheet.getRange(myRange.getRow(),myRange.getColumn() + 2).setDataValidation(dv.build());
   }

  if(startCol == 10){
    sheet.getRange(myRange.getRow(),myRange.getColumn() + 2).clearDataValidations();
  } 
  } 


}

1 Ответ

0 голосов
/ 10 апреля 2019

Вы указали неверная стартовая строка (т. Е. "6") для списка опций выпадающего списка Outcome (строка кода 48):

option = dvSheet.getSheetValues(6,startCol,10,1);

Замените "6" на "3", и у вас будет правильный список опций в выпадающем списке.

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