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

Я настраиваю Google Sheet, в котором есть столбец для марки и столбец для модели. Мне нужно работать так, чтобы, когда я выбираю определенную марку ТОЛЬКО, для этой машины будут отображаться ТОЛЬКО конкретные модели.

function myFunction() {
   var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("19 - 20");
  var name = ["Acura"];
  var list = ["MDX","RDX","NSX","ILX","RLX","TLX"];

  var rule = SpreadsheetApp
  .newDataValidation()
  .requireValueInList(list)
  .build();

  ws.getRange("D3").setDataValidation(rule);  
}

1 Ответ

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

Попробуйте этот код:

function onEdit() {
  var ws = SpreadsheetApp.getActiveSheet();
  var name = ["Acura", "Not Acura"];


  var rule = SpreadsheetApp
  .newDataValidation()
  .requireValueInList(name)
  .build();

  ws.getRange("B3").setDataValidation(rule);  

  model(ws);
}


function model(ss){
  var makeSel = ss.getRange("B3").getValue();
  var acura = ["MDX","RDX","NSX","ILX","RLX","TLX"];
  var notAcura = ["model1", "model2", "model3"];  

  if (makeSel == "")
    return 1;
  else if (makeSel == "Acura"){
    var rule = SpreadsheetApp
    .newDataValidation()
    .requireValueInList(acura)
    .build();

    ss.getRange("D3").setDataValidation(rule);
  }
  else if (makeSel == "Not Acura"){
    var rule = SpreadsheetApp
    .newDataValidation()
    .requireValueInList(notAcura)
    .build();

    ss.getRange("D3").setDataValidation(rule);
  }
}

Это изменит список моделей на основе выбора для списка, для тестирования я только что создал пустой лист и заполнил B3 и D3.Это приведет к тому, что изменение произойдет в реальном времени (из-за onEdit()).Вы можете добавить новые списки для разных марок и моделей, и вам нужно будет добавить операторы else if, но они будут просто добавлять код, который вы опубликовали в своем вопросе, с новым именем списка.

Пожалуйста, дайте мне знать, если это нужно уточнить.

...