Ir para conteúdo
Fórum Script Brasil

SérgioPrestes

Membros
  • Total de itens

    1
  • Registro em

  • Última visita

Sobre SérgioPrestes

SérgioPrestes's Achievements

0

Reputação

  1. Bom dia! Utilizo o script a seguir para possibilitar a validação tripla de dados em uma planilha do Google. As opções estão interligadas e, após a seleção na primeira coluna são carregadas as opções relacionadas à ela na segunda e terceira sucessivamente. Até agora eu usava esse script em uma única planilha, mas surgiu a necessidade de aplicar em várias dentro do mesmo arquivo. Podem dar uma ajuda? var mainWsName = "BASE TESTE"; var optionWsName = "Motivos"; var firstLevelColumn = 29; var secondLevelColumn = 30; var thirdLevelColumn = 31; var ws = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(mainWsName); var wsOptions = SpreadsheetApp.getActiveSpreadsheet().getSheetByName(optionWsName); var options = wsOptions.getRange(2, 1,wsOptions.getLastRow()-1,3).getValues(); function onEdit(e){ var activeCell = e.range; var val = activeCell.getValue(); var r = activeCell.getRow(); var c = activeCell.getColumn(); var wsName = activeCell.getSheet().getName(); if (wsName === mainWsName && c === firstLevelColumn && r > 1){ applyFirstLevelValidation(val,r); } else if (wsName === mainWsName && c === secondLevelColumn && r > 1){ applySecondLevelValidation(val,r); } } // end of onEdit function applyFirstLevelValidation(val,r){ if(val === ""){ ws.getRange(r, secondLevelColumn).clearContent(); ws.getRange(r, secondLevelColumn).clearDataValidations(); ws.getRange(r, thirdLevelColumn).clearContent(); ws.getRange(r, thirdLevelColumn).clearDataValidations(); } else { ws.getRange(r, secondLevelColumn).clearContent(); ws.getRange(r, secondLevelColumn).clearDataValidations(); ws.getRange(r, thirdLevelColumn).clearContent(); ws.getRange(r, thirdLevelColumn).clearDataValidations(); var filteredOptions = options.filter(function(o){ return o[0] === val }); var listToApply = filteredOptions.map(function(o){ return o[1] }); var cell = ws.getRange(r, secondLevelColumn); applyValidationToCell(listToApply,cell); } } function applySecondLevelValidation(val,r){ if(val === ""){ ws.getRange(r, thirdLevelColumn).clearContent(); ws.getRange(r, thirdLevelColumn).clearDataValidations(); } else { ws.getRange(r, thirdLevelColumn).clearContent(); var firstLevelColValue = ws.getRange(r, firstLevelColumn).getValue(); var filteredOptions = options.filter(function(o){ return o[0] === firstLevelColValue && o[1] === val }); var listToApply = filteredOptions.map(function(o){ return o[2] }); var cell = ws.getRange(r, thirdLevelColumn); applyValidationToCell(listToApply,cell); } } function applyValidationToCell(list,cell){ var rule = SpreadsheetApp .newDataValidation() .requireValueInList(list) .setAllowInvalid(false) .build(); cell.setDataValidation(rule); } Aguardo e agradeço.
×
×
  • Criar Novo...