Home
Button Mobile Webdesign em Foco
Newsletter Webdesign em Foco
Support Webdesign em Foco
Contribuition Webdesign em Foco
Doe para a Webdesign em Foco
Suporte da Webdesign em Foco
Fechar

Google Planilhas Avançado - #77 Menus Dependentes Múltiplos

13/02/2021

Nesse tutorial vamos aprender como criar menus dependentes dropdown múltiplos utilizando o Google Planilhas usando Google Apps Script.

Menus dropdown dependentes em várias linhas

O Google Planilhas ainda não conta com a opção nativa de menus dependentes, diante disso precisamos implementar essa funcionalidade através do código:

Através do método: requireValueInRange

let app=SpreadsheetApp;
let spreadsheet=app.getActiveSpreadsheet();
let sheet=spreadsheet.getSheetByName("Menus");
let db=spreadsheet.getSheetByName("DB");
let ui=app.getUi();

function onEdit(e)
{
  if(e.range.getColumn()==2 && e.source.getSheetName() == "Menus"){
    if(e.value != undefined){
      setValidation(e);
    }else{
      clearValidation(e);
    }
  }
}

function setValidation(e)
{
  let cell = sheet.getRange(`C${e.range.getRow()}`);
  let options=db.getRange('A1:J1').getValues();
  let colData;
  for(let row=0; row < options.length; row++){
    for(let col=0; col < options[row].length; col++){
      if(e.value == options[row][col]){
        colData = col + 1;
      }
    }
  }
  let range = db.getRange(2, colData, 100, 1);
  let rule = app.newDataValidation().requireValueInRange(range).build();
  cell.setDataValidation(rule);
}

function clearValidation(e)
{
  let cell = sheet.getRange(`C${e.range.getRow()}`);
  cell.setDataValidation(null);
  cell.clear();
}

Através do método: requireValueInList

Uma outra maneira de implementar esse menu dropdown é utilizando o método requireValueInList. Vamos ver como funciona:

//Menus Dependentes Múltiplos
function menusDependentes(e)
{
  let selectValue=e.value;
  let cell = sheetContas.getRange("G"+e.range.getRow());

  if(selectValue == undefined){
    cell.setDataValidation(null);
    cell.clear();
  }else{
    let values=sheetCategorias.getRange("A2:C").getValues();
    let arr=[];
    values.map((elem,ind,obj)=>{
        if(elem[0]!=""){
          if(elem[0] == selectValue){
            arr.push(elem[1]);
          }
        }
    });
    let rule = app.newDataValidation().requireValueInList(arr).build();
    cell.setDataValidation(rule);
  }
}

Então é isso pessoal, por hoje é só! Sucesso nos códigos e na vida!

Precisa personalizar sua planilha? webdesignemfoco@gmail.com

Receba as aulas da Webdesign em Foco em Seu Email
Suporte Webdesign em Foco

Posts Relacionados

Google Planilhas Avançado - #76 Importando CSV
Nesse tutorial realizaremos a integração do Google Planilhas com um arquivo CSV oriundo do nosso computador.
Saiba mais!
Google Planilhas Avançado - #78 Concatenando Várias Fórmulas
Nesse tutorial aprenderemos a concatenar várias formas e tentando resolver problemas com apenas uma linha de fórmula.
Saiba mais!
Google Planilhas
Neste curso abordaremos a fundo as funcionalidades do Google Planilha. Adentraremos no Google App Script e na API do Google Sheet. Aproveite.
Saiba mais!