Excelente aula meu amigo. Por favor, continue sempre com as aulas de google sheets, não deixa de compartilhar teu conhecimento sobre google sheets. Bom demais!
Que trabalho incrível esse seu, meu amigo! Salvou minha vida com esse recurso. Estou relutando pra começar a usar o Google Sheets, pois não consigo abrir mão do Excel. Mas precisei desse recurso no Google e vocês são de longe o melhor que encontrei sobre esse assunto!!! Parabéns e, por favor, continuem com esse trabalho!!
@@WebdesignemFoco fiz a implementação mas tive problema a execução da função clearValidation, ela ficava executando intermitente, o IF e.value ! = undenfi estava pulando
Parabéns pela aula, gosto muito e acompanho sempre o canal. Quando possível, gostaria de uma aula com menus dependentes em vários níveis (ex: países, regiões, Estados, cidades, bairros etc). Grato
Está dando "TypeError: Cannot read properties of undefined (reading 'range')" Qual seria a correção possível? Copiei e colei o código do site e fiz uma planilha igual. Teria um link de uma funcionando?
Professor, parabéns pelo trabalho! Suporte importante para os usuários do Google Planilhas. Gostaria de esclarecer uma dúvida: não há outra maneira mais prática de trabalhar com os menus dependentes múltiplos, que não seja através do Apps Script? No Excel, por exemplo, é possível fazer isso com a função INDIRETO!
estava com o mesmo problema e encontrei esse vídeo que me salvou: th-cam.com/video/tqFt1RN0cEo/w-d-xo.html. está em inglês mas não tem áudio, apenas assisti e adaptei pra planilha que estava trabalhando e deu certo. espero que ajude!
No meu dia a dia de trabalho em orgao publico uso varias planilhas para controle de pregoes, as funcoes estao sendo muito uteis para desenvolver o que preciso.
Bom dia! Que tutorial fantástico, parabéns, ótima explicação. Seria possível criar a dependência para mais colunas? Por exemplo escolher duas cidades dentro do estado de São Paulo, 1º Coluna: cidade de nascimento, 2º Coluna cidade onde reside. Abraços,
@@WebdesignemFoco muito obrigado, executei e funciona, mas não teria uma forma de abreviar, por exemplo, 'C$;G$'. Seria possível na mesma linha de comando? Tentei de tudo (claro, dentro do que entendo, rsrs...).
Excel é sensacional, mas tem a limitação de não estar na nuvem. Então, estou tentando aprender o Google Sheets. O Office Script, como sempre, tem que pagar a licença.
Estou com uma duvida sobre criar menus (validação de dados). Eu possuo uma planilha separados por meses e nelas possuem uma coluna com tipos de erros e outra uma de relatório, e eu gostaria de saber se a possibilidade de criar uma menu na aba de relatório buscando por meses ou pelo nome da coluna dos tipos de erros dos meses e aparecer 'indiretamente' os erros que possuem na coluna.
Muito bom o vídeo! Como que eu faço pra este script funcionar em outra aba, duplicando a aba "menu" pra "menu 2" ? Neste caso cada aba "menu" é um projeto e eu quero usar em outro projeto na mesma planilha. Mto obrigado!
Desculpa pelo meu desconhecimento. Fiz uma planilha igual a sua, com o código exatamente igual ao do vídeo e não funcionou aqui. Após criar o código e salvar, autorizando a execução, precisa fazer algo a mais para ele ser aplicado à planilha? pq realmente não está funcionando aqui. Simplesmente nada acontece. É como se não houvesse nada ali.
@@michellemarangoni78 os códigos estão na descrição do vídeo, caso queira pode fazer um orçamento de suporte individual também: webdesignemfoco@gmail.com
Se eu quiser fazer nessa coluna do estado por exemplo … não dar pra repetir o mesmo estado … exemplo … se na linha 3 tem RJ , não posso colocar RJ nem nenhuma outra …. O menu dependente na hora q eu abrir não aparece a opção RJ …. Como fazer isso?
Não funciona com planilha compartilhada? Já tentei vários scripts... nunca funciona. Segui todos os passos exatamente... mas fiz dentro de uma pasta de trabalho compartilhada, apenas criei as abas conforme o tutorial e criei os scripts... mas nao funciona de jeito nenhum. Não sei o que mais fazer.
Qualquer script pra funcionar, os usuários da planilha tem que ter permissão de editor, isso é uma regra do google, se a pessoa tiver compartilhada apenas como leitor ela não executa o script.
Excelente vídeo! Super explicativo! Consegui fazer uma aba com os menus dependentes, mas eu queria aplicar essa dependência para várias abas, no caso seriam 12, uma aba para cada mês. Como faço isso? Primeiro, criei um script no AppsScript pra aba de janeiro e deu certo, funcionou tal qual o vídeo. Depois criei outro script (pra aba de fevereiro), mas quando faço isso o script anterior (janeiro) para de funcionar. Assim só consegui os menus dependentes em apenas uma aba. Se alguém puder me ajudar em como fazer esses menus dependentes em doze abas distintas, agradeço.
Meu caro, me tira uma dúvida, como eu conseguiria fazer a mesma coisa para 4 planilhas??? Pois estou tentando gerar 4 arquivos de código e não dá certo...
no meu caso estou utilizando nas colunas P e Q porém está dando o erro, Range not found let cell = sheet.getRange('Q${e.range.getRow()}'); let range = db.getRange('P2:P2000'); let rule = app.newDataValidation().requireValueInRange(range).build(); cell.setValidation(rule);
@@eficaz2937 lendo os outros comentários aqui só tem elogios. Se você não consegue implementar um código, você não pode acusar levianamente uma pessoa que está explicando as coisas de graça no TH-cam
na pausa em 8:00 meu codigo nao funcinou está iguazinho do video mas aparece que nao consegue chamar o app.getUIi Não é possível chamar SpreadsheetApp.getUi() a partir deste contexto 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 range = db.getRange(`B1:B10`); let rule = app.newDataValidation().requireValueInRange(range).build(); cell.setDataValidation(rule); } function clearValidation(e) { }
Olá, professor. O seu tutorial é o mais completo e exato que vi na Internet sobre esse assunto, e pretende resolver os menus dependentes múltiplos de modo programado, real, sem as "gambiarras" que a gente vê em outros tutoriais, como p.ex., usar a função INDIRECT, ou um monte de IF's. Ocorre que segui rigorosamente seu ensinamento, construí uma planilha de exemplo exatamente como a sua, inclusive estados, cidades etc., mas não funciona de jeito nenhum. Transcrevi até o texto do tutorial indicado, mas sempre dá o mesmo erro, veja: Erro TypeError: Cannot read properties of undefined (reading 'range') onEdit @ Código.gs:8 Como solucionar? Onde estou errando? EM TEMPO: A interface do Google Sheets que uso é ligeiramente diferente, sendo que o Apps Script Editor também. Desde já, agradeço a ajuda!
Oi, parabéns pelo vídeo. Muito útil a funcionalidade! Eu fiz tudo certinho conforme o vídeo e o documento. A diferença da minha planilha é que começa na célula A e não na B. Está dando o seguinte erro: Erro TypeError: Cannot read property 'range' of undefined setValidation @ Definir Campanhas.gs:20 Segue o script: let app=SpreadsheetApp; let spreadsheet=app.getActiveSpreadsheet(); let sheet=spreadsheet.getSheetByName("Demandas"); let db=spreadsheet.getSheetByName("Campanhas"); let ui=app.getUi(); function onEdit(e) { if(e.range.getColumn()==1 && e.source.getSheetName() == "Demandas"){ if(e.value != undefined){ setValidation(e); }else{ clearValidation(e); } } } function setValidation(e) { let cell = sheet.getRange(`B${e.range.getRow()}`); let options=db.getRange('A1:Z1').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(`B${e.range.getRow()}`); cell.setDataValidation(null); cell.clear(); } Consegue ajudar?
fiz igual e não funcionou pra mim; utilizei até a mesma planilha e nada erro: TypeError: Cannot read property 'range' of undefined onEdit 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 < option.length; row++){ for(let col=0; col < option[row].length; col++){ if(e.value == option[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(); }
Muito Bom. Parabens pela explicação. Tirou onda
Vídeo excelente! Me ajudou bastante da validação de dados.
Explicão impecável, exemplo bem detalhado, boa didática e ótima organização do material. Parabéns! Ganhou um inscrito e um gostei
Muito bom! depois de assistir muitos vídeos de outros canais, este foi o único que consegui fazer funcionar!
Vlw
Excelente aula meu amigo. Por favor, continue sempre com as aulas de google sheets, não deixa de compartilhar teu conhecimento sobre google sheets. Bom demais!
Muito obrigado pelo feedback! Tmj
Que trabalho incrível esse seu, meu amigo! Salvou minha vida com esse recurso. Estou relutando pra começar a usar o Google Sheets, pois não consigo abrir mão do Excel. Mas precisei desse recurso no Google e vocês são de longe o melhor que encontrei sobre esse assunto!!! Parabéns e, por favor, continuem com esse trabalho!!
Vlw Walter, tmj irmão!
Muito bom! Fiquei emocionada quando funcionou, porque já tinha tentado várias vezes! Deus abençoe!
Nem precisa pedir like...pq já é automático pra mim...muito top suas aulas... parabéns.
Brigadão André 😀
top dmais essa aula. Muito obrigado!
Tmj
Genial!!! Muito obrigadaaaa!!!
Cara, incrível seu vídeo... Me salvou, estou te seguindo e vou ver se aprendo desde o inicio... Parabéns...
Tmj
Ótima aula
Obrigado pelo feedback!!
@@WebdesignemFoco fiz a implementação mas tive problema a execução da função clearValidation, ela ficava executando intermitente, o IF e.value ! = undenfi estava pulando
@@EduardoCardosodosReisSantos undefined
@@WebdesignemFoco sim no IF ele está passando direto, quando comemto a função clearValidation, ele executa normalmente a inserção da validação.
@@EduardoCardosodosReisSantos precisava acessar sua planilha pra dar uma olhada. suporte premium webdesignemfoco@gmail.com
Parabéns pela aula, gosto muito e acompanho sempre o canal. Quando possível, gostaria de uma aula com menus dependentes em vários níveis (ex: países, regiões, Estados, cidades, bairros etc). Grato
A lógica é a mesma, é só ir multiplicando a função
Por query da pra fazer tb sem script
Tem alguma maneira de os cabeçalhos irem aparecendo conforme a escolha da coluna anterior?
Está dando "TypeError: Cannot read properties of undefined (reading 'range')"
Qual seria a correção possível?
Copiei e colei o código do site e fiz uma planilha igual. Teria um link de uma funcionando?
Professor, parabéns pelo trabalho! Suporte importante para os usuários do Google Planilhas. Gostaria de esclarecer uma dúvida: não há outra maneira mais prática de trabalhar com os menus dependentes múltiplos, que não seja através do Apps Script? No Excel, por exemplo, é possível fazer isso com a função INDIRETO!
Também gostaria de saber, ele não te respondeu né.. :/ Vc conheceu descobrir uma função ou forma mais fácil que o App Script?
estava com o mesmo problema e encontrei esse vídeo que me salvou: th-cam.com/video/tqFt1RN0cEo/w-d-xo.html. está em inglês mas não tem áudio, apenas assisti e adaptei pra planilha que estava trabalhando e deu certo. espero que ajude!
Incrível!
Vlw Marlon!!
Como faço para aplicar a mesma regra para duas abas diferentes?
ótima aula, fiquei com dúvida de como posso fazer para replicar o mesmo script para outras páginas ?
pra explicar isso teria que marcar um horário de suporte premium. orçamento: webdesignemfoco@gmail.com
No meu dia a dia de trabalho em orgao publico uso varias planilhas para controle de pregoes, as funcoes estao sendo muito uteis para desenvolver o que preciso.
top!
Bom dia!
Que tutorial fantástico, parabéns, ótima explicação. Seria possível criar a dependência para mais colunas?
Por exemplo escolher duas cidades dentro do estado de São Paulo, 1º Coluna: cidade de nascimento, 2º Coluna cidade onde reside.
Abraços,
Sim é possível. basta ir repetindo a mesma lógica do código
@@WebdesignemFoco muito obrigado, executei e funciona, mas não teria uma forma de abreviar, por exemplo, 'C$;G$'. Seria possível na mesma linha de comando? Tentei de tudo (claro, dentro do que entendo, rsrs...).
Excel é sensacional, mas tem a limitação de não estar na nuvem. Então, estou tentando aprender o Google Sheets. O Office Script, como sempre, tem que pagar a licença.
Top
Tmj
Estou com uma duvida sobre criar menus (validação de dados).
Eu possuo uma planilha separados por meses e nelas possuem uma coluna com tipos de erros e outra uma de relatório, e eu gostaria de saber se a possibilidade de criar uma menu na aba de relatório buscando por meses ou pelo nome da coluna dos tipos de erros dos meses e aparecer 'indiretamente' os erros que possuem na coluna.
Isso vai dar um certo trabalho. Acredito que com script tenha sim
Muito bom o vídeo! Como que eu faço pra este script funcionar em outra aba, duplicando a aba "menu" pra "menu 2" ? Neste caso cada aba "menu" é um projeto e eu quero usar em outro projeto na mesma planilha. Mto obrigado!
Fica difícil te explicar por aqui. Qualquer coisa contrata nosso suporte Premium. Orçamento: webdesignemfoco@gmail.com
Desculpa pelo meu desconhecimento. Fiz uma planilha igual a sua, com o código exatamente igual ao do vídeo e não funcionou aqui. Após criar o código e salvar, autorizando a execução, precisa fazer algo a mais para ele ser aplicado à planilha? pq realmente não está funcionando aqui. Simplesmente nada acontece. É como se não houvesse nada ali.
Voce poderia deixar o link da planilha para gebte treinar
Eu excluo as planilhas, porém os códigos e explicações estão no link da descrição do vídeo
@@WebdesignemFoco não estou conseguindo fazer, dá erro ranger nA LINHA 9.
@@michellemarangoni78 os códigos estão na descrição do vídeo, caso queira pode fazer um orçamento de suporte individual também: webdesignemfoco@gmail.com
Quanto vc cobra para me ajudar em uma de resultados de golfe ?
Orçamento: webdesignemfoco@gmail.com
Se eu quiser fazer nessa coluna do estado por exemplo … não dar pra repetir o mesmo estado … exemplo … se na linha 3 tem RJ , não posso colocar RJ nem nenhuma outra …. O menu dependente na hora q eu abrir não aparece a opção RJ …. Como fazer isso?
Isso é difícil de explicar por aqui. Qualquer coisa solicite um orçamento de suporte premium webdesignemfoco@gmail.com
Não funciona com planilha compartilhada? Já tentei vários scripts... nunca funciona. Segui todos os passos exatamente... mas fiz dentro de uma pasta de trabalho compartilhada, apenas criei as abas conforme o tutorial e criei os scripts... mas nao funciona de jeito nenhum. Não sei o que mais fazer.
Qualquer script pra funcionar, os usuários da planilha tem que ter permissão de editor, isso é uma regra do google, se a pessoa tiver compartilhada apenas como leitor ela não executa o script.
Excelente vídeo! Super explicativo!
Consegui fazer uma aba com os menus dependentes, mas eu queria aplicar essa dependência para várias abas, no caso seriam 12, uma aba para cada mês.
Como faço isso?
Primeiro, criei um script no AppsScript pra aba de janeiro e deu certo, funcionou tal qual o vídeo.
Depois criei outro script (pra aba de fevereiro), mas quando faço isso o script anterior (janeiro) para de funcionar.
Assim só consegui os menus dependentes em apenas uma aba.
Se alguém puder me ajudar em como fazer esses menus dependentes em doze abas distintas, agradeço.
Qualquer coisa contrata o suporte premium que te ajudamos webdesignemfoco@gmail.com
Vc conseguiu? Se sim, como? Também preciso fazer o mesmo para cada mês.
Meu caro, me tira uma dúvida, como eu conseguiria fazer a mesma coisa para 4 planilhas??? Pois estou tentando gerar 4 arquivos de código e não dá certo...
Só fazer um cópia e instalar o acionador em cada planilha
no meu caso estou utilizando nas colunas P e Q porém está dando o erro, Range not found
let cell = sheet.getRange('Q${e.range.getRow()}');
let range = db.getRange('P2:P2000');
let rule = app.newDataValidation().requireValueInRange(range).build();
cell.setValidation(rule);
No getRange você usa crase e não aspas simples
Vídeo com erro, vários comentários, pede ajuda, manda contratar suporte, fácil assim.
Kkkk
@@WebdesignemFoco Assim fica fácil, posta conteúdo com erro, pra vender suporte.
@@eficaz2937 não tem nenhum erro não. Os códigos estão na descrição
@@WebdesignemFoco copiei o código identifico, eu e outras pessoas, e vários relatam o mesmo problema.
@@eficaz2937 lendo os outros comentários aqui só tem elogios. Se você não consegue implementar um código, você não pode acusar levianamente uma pessoa que está explicando as coisas de graça no TH-cam
A minha lista suspensa fica carregando toda vida... e não está aparecendo as opções... O que estou fazendo de errado? Por que está dando esse erro?
Pode ter algum erro no seu código
Aconteceu isso comigo, mas pq coloquei 1000 linhas (mesmo que em branco), alterei pra 10 e parou de carregar. Rs
Porque às vezes você usa var e às vezes você usa o let como variável?
O certo é let, var não se usa mais
@@WebdesignemFoco Obrigado por responder vou me atualizar!
Tô vendo que vou ter que dar uma estudada na linguagem JavaScript...
@@FranciBahamult tem o curso aí na playlist do canal
na pausa em 8:00 meu codigo nao funcinou
está iguazinho do video mas aparece que nao consegue chamar o app.getUIi
Não é possível chamar SpreadsheetApp.getUi() a partir deste contexto
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 range = db.getRange(`B1:B10`);
let rule = app.newDataValidation().requireValueInRange(range).build();
cell.setDataValidation(rule);
}
function clearValidation(e)
{
}
Olá, professor. O seu tutorial é o mais completo e exato que vi na Internet sobre esse assunto, e pretende resolver os menus dependentes múltiplos de modo programado, real, sem as "gambiarras" que a gente vê em outros tutoriais, como p.ex., usar a função INDIRECT, ou um monte de IF's.
Ocorre que segui rigorosamente seu ensinamento, construí uma planilha de exemplo exatamente como a sua, inclusive estados, cidades etc., mas não funciona de jeito nenhum. Transcrevi até o texto do tutorial indicado, mas sempre dá o mesmo erro, veja:
Erro
TypeError: Cannot read properties of undefined (reading 'range')
onEdit @ Código.gs:8
Como solucionar? Onde estou errando? EM TEMPO: A interface do Google Sheets que uso é ligeiramente diferente, sendo que o Apps Script Editor também.
Desde já, agradeço a ajuda!
Oi, parabéns pelo vídeo.
Muito útil a funcionalidade!
Eu fiz tudo certinho conforme o vídeo e o documento.
A diferença da minha planilha é que começa na célula A e não na B.
Está dando o seguinte erro:
Erro
TypeError: Cannot read property 'range' of undefined
setValidation @ Definir Campanhas.gs:20
Segue o script:
let app=SpreadsheetApp;
let spreadsheet=app.getActiveSpreadsheet();
let sheet=spreadsheet.getSheetByName("Demandas");
let db=spreadsheet.getSheetByName("Campanhas");
let ui=app.getUi();
function onEdit(e)
{
if(e.range.getColumn()==1 && e.source.getSheetName() == "Demandas"){
if(e.value != undefined){
setValidation(e);
}else{
clearValidation(e);
}
}
}
function setValidation(e)
{
let cell = sheet.getRange(`B${e.range.getRow()}`);
let options=db.getRange('A1:Z1').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(`B${e.range.getRow()}`);
cell.setDataValidation(null);
cell.clear();
}
Consegue ajudar?
Nesse caso precisaria acessar sua planilha. Orçamento de suporte premium: webdesignemfoco@gmail.com
A minha também está com o mesmo erro, aparentemente está faltando algum retorno do evento undefined
@@SnudyyBr é isso mesmo. Já tentei de tudo aqui, mas não está dando certo.
Estou tendo o mesmo problema
fiz igual e não funcionou pra mim; utilizei até a mesma planilha e nada
erro: TypeError: Cannot read property 'range' of undefined
onEdit
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 < option.length; row++){
for(let col=0; col < option[row].length; col++){
if(e.value == option[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();
}
encontrei o erro... >>> let options = db.getRange('A1:J1').getValues();
@@jeffvale2554 Qual foi a solução? Remover o espaço entre let options=db.getRange ???
@@jeffvale2554 qual a solução estou com o mesmo erro