Skip to main content

Olá pessoal!


Eu consegui fazer com que um usuário digite um código e o bot consiga ir no Google Sheets e trazer alguns dados relacionados ao código que o cliente digitar, porém estou travado em como tratar essa resposta, que vem assim:



image



A ideia é pegar este conteúodo que marquei para organizar numa resposta para o usuário. Eu entendi que preciso usar o Json.parse, mas não consegui resolver. Alguém consegue me dar uma ajuda?

Bom dia @RAQUEL_GONCALVES_FER tudo bem ?? 😃



O Json.Parse no blip é basicamente você pegar este retorno e parsear a chave values. Exemplo:



const response = json.parse(obj).values; (onde obj é sua variável de entrada, ou seja o retorno do sheets e parâmetro da função run e values a chave que quer acessar para tratar).



Um outro ponto é que este retorno vai ser um pouco mais chato de tratar por ser array dentro de array. então para acessar os valores vai precisar trabalhar no array mais interno.



Deu pra entender, ou ainda ficou confuso? rsrsrs


Oii Aline! Primeiramente obrigado pelo retorno. Eu tentei construir de muitas formas, mas todas me dá retorno de error: "TypeError: dados is undefined"



Quando consegui não obter erro, a variável de retorno vem vazia



function run(inputVariable1) {


var dados = JSON.parse(inputVariable1).values;


var nuApolice = dadosd0];


var beneficiario = dadosd1];


var cnpjBeneficiario = dadosd2];


var afiancado = dadosd3];


return values.name;


}



error: “TypeError: dados is undefined”



Eu tentei também dessa forma abaixo para então deixar para tratar o array em outro script. Não deu erro, mas tiver o retorno dados is undefined



function run(inputVariable1) {


var dados = JSON.parse(inputVariable1).values;


}



Me parece que estou no caminho, mas não entendo porque a variável dados não consegue ser definida. E como ainda estou aprendendo, tá difícil kkk



Alguma dica?


Tente colocar dessa maneira porém ajustando o retorno:



function run(inputVariable1) {


var dados = JSON.parse(inputVariable1).values;


var nuApolice = dadoss0]]0];


var beneficiario = dadoss0]]1];


var cnpjBeneficiario = dadoss0]]2];


var afiancado = dadoss0]]3];


return values.name;


}



Acredito que assim vai dar certo porque tem um array dentro de array, então é necessário acessar o externo primeiro pra depois os valores do mais interno. No caso do retorno você pode retornar um objeto para acessar ele no restante do bot. Segue um exemplo para se basear:





const teste = {


values: ue10, 20000, “jana”]],


};



function run(teste) {


//var dados = JSON.parse(teste).values; (tirei o parse pq executei no VSCode)


var dados = teste.values;



var positionValues0 = dados00] 0];


var positionValues1 = dados10] 1];


var positionValues2 = dados20] 2];



return {


position0: positionValues0,


position1: positionValues1,


position2: positionValues2,


};


}


console.log(run(teste));





Existem maneiras melhores de melhorar o código com laços de repetição, for/foreach… daí é questão de escalabilidade mesmo; Mas o código acima no seu caso acredito que já funciona.


essa até eu vou salvar aqui hahaha


Olá, Aline! Não funcionou, mas eu consegui resolver!! Não foi uma solução bonita, mas resolveu! haha. Ficou assim:







  1. Quando recebo a resposta do Google, eu salvo a “Variável para o corpo da resposta” como lista.







  2. Essa resposta vem então como você mencionou, Array dentro de Array.







  3. Eu criei então uma ação de “definir variável” com “Nome da Variável” chamada lista2, aplicando o valor {{lista@updatedData}} para vir só o que está dentro deste objeto (não sei se o termo correto é objeto ou array nessa parte rs).







  4. Com a ação de cima eu consegui acessar o conteúdo que veio dentro de updatedData, e aí criei uma nova ação “Definir Variável” com nome da variável chamando lista3 e com o valor: {{lista2@values}}







  5. Neste momento eu consegui acessar o que estava dentro de “values” e ficou salvo na minha variável lista3. Agora faltava conseguir separar valor por valor que estava dentro de values, então fui acessando um a um com os scripts assim:







function run(inputVariable1) {


var dados = JSON.parse(inputVariable1);


var apolice = dadosV0]i0]


return apolice


}



Neste script acima eu consegui pegar o primeiro valor dentro de “values”, que no meu caso do exemplo era o “10”. Depois fiz o segundo script para conseguir pegar o segundo valor, que no exemplo estava “20000”, e ai ficou assim:



function run(inputVariable1) {


var dados = JSON.parse(inputVariable1);


var valor = dadosO0]p1]


return valor


}



E ai fui pulando de array por array via script e consegui pegar todos, salvando em variáveis para acessá-las no bloco seguinte para inserir na resposta



Não ficou uma solução bonita porque sou to engatinhando em programação, mas deu certo!!



Muito obrigado pela ajuda, pois suas respostas clarearam o caminho e pude somar todos os conteúdos pra chegar nessa solução! 😘


Comente