Skip to main content

Olá Blippers! Tudo bem com vocês? Segue um tutorial que deu muito trabalho para nós (quando digo nós, digo eu e @fadoaglauss). Espero poder ajudar muitos aqui do Fórum a integrar o Blip com Google Sheets. Então, sem mais delongas, aqui está:



Hoje eu vou ensinar como incluir novos dados em uma planilha do Google Sheets através de uma API. Assim, nesse tutorial você irá: criar o Token de Oauth, criar o projeto e, por fim, adicionar os dados para a planilha.



Mas claro, antes e começar quero fazer um agradecimento especial a @fadoaglauss que me ajudou a criar esse tutorial de uma forma mais clara, objetiva e bonita!





Criar Token de Oauth



Nessa primeira etapa criaremos o Token de autenticação através do ID de Cliente e do ID Secreto. Agora, vamos precisar de uma conta Google para acessar o Google Developers.





Criar Projeto



Você precisa ir no canto superior esquerdo e clicar no seu projeto atual (é aquele que tem uma setinha assim ▽). Com isso uma nova janela irá se abrir e nesse momento você vai clicar em Criar Novo Projeto, no canto superior direito desta janela. A imagem abaixo mostra o passo a passo, caso ainda não tenha ficado claro:





Agora, dê um nome ao seu projeto e pode manter sem organização. É só CRIAR!







Ativar Serviço de Sheets no seu Projeto



Você precisa ir no canto superior esquerdo e clicar nos ☰. Com isso uma nova janela a esquerda irá se abrir e nesse momento você vai clicar em APIs e Serviços e em seguida em Biblioteca. Agora procure pela palavra Sheets e selecione a primeira opção. Depois é só Ativar ao clicar no botão no centro da tela. Aqui também tem uma imagem que mostra o passo a passo:





Você vai fazer o mesmo processo e clicar nos ☰, mas a diferença agora é você irá acessar Painel em APIs e Serviços em vez de Biblioteca. Neste novo ambiente, clique em Tela de Consentimento OAuth que está no menu lateral esquerdo. Agora você verá duas opções para User Type, basta selecionar Externo e clicar em CRIAR! Aqui também temos uma imagem que mostra o passo a passo:





Agora, para finalizar esta etapa, você deverá definir um nome para a API. Insira o e-mail para suporte e dos desenvolvedores (lembrando, que não precisa preencher mais nada). Vá até o final da página e clique em SALVAR E CONTINUAR. Em seguida, nessa próxima página que irá ser exibida, clique no mesmo botão no final da página de SALVAR E CONTINUAR 😉



E, como cereja do bolo, você deverá ir ao final da página e clicar em VOLTAR PARA PAINEL, que será a Tela de Consentimento OAuth. Daí é só ir em PUBLICAR APLICATIVO, como na imagem abaixo:







Criar credenciais



Vamos lá, no menu lateral esquerdo clique em “Credenciais”. Nesta página que abriu, clique em “+ CRIAR CREDENCIAIS” e em seguida na opção ID do Cliente OAuth, como mostrado imagem a baixo 👇





Agora, selecione Aplicativo da Web para a escolha do Tipo de aplicativo e insira o nome da sua escolha. Nesse momento, você precisará de muita atenção, pois é uma parte importante.



Insira nos URIs de Redirecionamento Autorizados os seguintes links do portal: https://www.portal.blip.ai/application e OAuth 2.0 Playground. Em seguida, clique em Criar e seguir para as chaves, como no tutorial logo em seguida.





Nesse momento, irá aparecer uma janela com as credenciais. Não se esqueça de anotar tudinho!!!







Autorizar credenciais



Nessa parte, você deverá acessar OAuth 2.0 Playground e clicar na ⚙️ (engrenagem) no canto superior direito. Nesse novo pop-up habilite a opção Use your own OAuth credentials e preencha com os dados que coletou na etapa anterior. Dê uma olhadinha no nosso .gif abaixo 😉





Agora é só dar um CRTL+F para procurar pela palavra Sheets. Selecione a opção para selecionar a opção para expandi-la. Em seguida, selecione a opção que possui speedsheets nome, como a dessa figura:





Após selecionar, clique em Autorizar APIs. Caso peça para autorizar acessar domínios desconhecidos, não tem problema: é só dar seguinte como de costume.



Caso ocorra este erro, basta copiar o URL do aviso, e ir onde autorizamos URLS, e autorizar essa também 🙂



image



Para finalizar, selecione o e-mail o qual o OAuth será vinculado e clique em Permitir!!





Por fim, clique em para obter o token de atualização Esse será usado para atualizar o token de acesso, uma vez que esse expira a cada 60 minutos.





Criar Sheets



Nessa última etapa de integração com o Google Sheets, você precisará criar uma planilha Google e nomear as colunas.



ATENÇÃO: se você não nomear as colunas possivelmente a integração falhará, então recomendo utilizar pelo menos um nome “temporário”.



Agora, com a sua planilha em mãos, você precisará armazenar o código da planilha. Tá vendo essa parte em blur na imagem a baixo, então é disso que você precisa.





Nesse momento, espero que você já tenha o ID do Cliente, o ID Secreto Do Cliente, o Token de Atualização e o Código da Planilha. Caso você ainda não tenha, volte alguns passos 😦



Finalmente a parte do Google acabou! Eu ouvi um “glória”? Então, vamos para a parte mais fácil: o Blip.





Integração com Google Sheets: desenvolver o fluxo no Builder do Blip



Você perceberá que para usar a API do Sheets no Blip será necessário duas requisições, uma para obter a chave de acesso para API e outra para popular a planilha.





Obter Token por Requisição HTTP



Nesse momento (quase final) iremos obter uma chave de API com duração de 60 minutos. Para isso, crie em Ações de Entrada/Saída no seu bloco uma Requisição HTTP 👇





O Método será POST, o URL será https://accounts.google.com/o/oauth2/token com os Cabeçalhos vazios. Por fim, o Corpo será:



{

"client_secret": "seu_id_secreto",

"grant_type": "refresh_token",

"refresh_token": "{{seu_refresh_token}}",

"client_id": "{{seu_id_de_cliente}}"

}



E sua Variável para o corpo da resposta será oauth.



Ao final, você deverá ter algo igual, ou pelo menos parecido, com a imagem abaixo:







Inserir Elementos na Planilha do Google Sheets



Para esse passo, você utilizará novamente uma Requisição HTTP, como da etapa anterior. A diferença agora é que o URL será https://sheets.googleapis.com/v4/spreadsheets/{{codigo da sua planilha}}/values/{{nome da aba}}!{{colunas escolhidas}}:append?insertDataOption=INSERT_ROWS&responseDateTimeRenderOption=FORMATTED_STRING&valueInputOption=USER_ENTERED .



Acho que ficou meio confuso, né? Se sim, dá uma olhada nesse exemplo: para a planilha da imagem a baixo, utilizaríamos o seguinte URL https://sheets.googleapis.com/v4/spreadsheets/{{codigo da sua planilha}}/values/teste1!A:D:append?insertDataOption=INSERT_ROWS&responseDateTimeRenderOption=FORMATTED_STRING&valueInputOption=USER_ENTERED.





Por fim, o Cabeçalhos da requisição será a key seguida do value: AuthorizationBearer {{oauth@access_token}}.


Já o Corpo (que será de acordo com sua necessidade) deverá ser preenchido em ordem alfabética de acordo as colunas. Por exemplo, no nosso caso que começa pela A, devemos preencher o Corpo da requisição na seguinte ordem: A, B, C e D, como no exemplo:



{

"values": m

<

"{{contact.name}}",

"{{contact.phoneNumber}}",

"{{contact.email}}",

"{{menu}}"

]

]

}





Dicas de :1st_place_medal para potencializar sua planilha



Use e abuse dos dados, pegue quantos você quiser. Por exemplo, monte uma aba que guarde os dados de quando cliente entra para o Atendimento Humano, e, uma que saia. Vai por mim, ajuda bastante 😉



Fique atento também aos status da API, pois os erros são padrões. Certo é 200, caso contrário algo deu errado e você precisa da nossa ajuda. Nesse caso é só mandar uma mensagem aqui, que estaremos sempre felizes em te ajudar.

Sim, o cadastro foi feito no Google Cloud Platform, gerando o ID do cliente





E o refresh token, estou pegando desta tela





@Allan_Ribeiro se atente a essa parte, e faça a authorização denovo


Cara, parabéns por toda a dinâmica, deu tudo certo agora, já está autenticando e gravando as informações de interação que coloquei no BOT, muito obrigado 😉


Você disse que não acreditava, agora vendo você acredita? KKKKK



Falei a minha doc é divina


Vc é fera cara, ainda coloquei umas paradas no json (Javascript), agora tenho um banco de dados na Sheets Google…rsrsrsr


Vlw meu guerreiro


Boa tarde, pessoal!



Primeiramente quero enaltecer o trabalho de vocês sobre esse assunto, ficou muito completo! Parabéns @Pedro_Lucas! Minha dúvida hoje é em especial pra você hehe 😀



Utilizamos a integração do Google Sheets para salvarmos notas e avaliações escritas para cada atendimento realizado conosco, porém notamos um problema sério que gostaríamos de uma luz, caso possam nos ajudar, já que infelizmente não conseguimos resolver o problema abrindo um chamado com a Blip. 🙁



Só um ponto importante antes: Decidimos que todo e qualquer atendimento dos sub bots passará pela planilha, até mesmo quando o usuário opta por não realizar uma avaliação. Isso nos ajuda com alguns indicadores quantitativos diários além da própria avaliação da ferramenta em si 😉



O problema: Quando fomos confirmar as informações da planilha com o Histórico de Atendimentos dos bots da Blip, encontramos um gap enorme no registro de atendimentos, sem nenhum padrão aparente. Ou seja, a planilha registrava apenas 30 atendimentos em um dia, quando na realidade tivemos 50 de acordo com o Histórico de Atendimentos… Significando que a planilha não conseguiu registrar 20 dos atendimentos por algum motivo.



Nossos bots de atendimento (8 atualmente) são dividos apenas por motivos de gestão e são extremamente parecidos em estrutura (Builder), com apenas algumas características textuais distintas, e praticamente todos eles apresentaram essa situação em diversos momentos. Ressalto ainda que temos uma média de 50 atendimentos por dia, nada exorbitante que possa estar “sobrecarregando” as entradas na planilha.



Ao tentar reproduzir a situação, não consigo encontrar nenhum problema, a planilha consegue registrar tudo direitinho em todos os 8 bots, ou seja, todos os bots conseguem enviar dados para a planilha…





Mas no fim do mês, quando contamos as avaliações da planilha com a quantidade de atendimentos do Blip, a quantidade não bate.



Alguém já enfrentou algo parecido? Vejo que quase ninguém reportou algo assim por aqui, por isso imagino que seja algo pontual aqui. Podem nos ajudar de alguma forma? Desde já agradeço!



Atenciosamente,



Júlio Pozza.


Bom dia my best friendo, Cara, da uma olhada no plugin builder variables, e analisa caso acaso, o que ficou armazenado na variável de status de Sheets, se tiver duvida me mostra aqui e nós analisamos juntos, mas veja também em que bloco você faz a integração e veja se casoa pessoa não responde se ela passa nele




Parabéns pelo conteúdo completo e detalhado.



Infelizmente a segunda requisição está apresentando o seguinte erro:



Error 404 (Not Found)!!1





404. That’s an error.

The requested URL /v4/spreadsheets/docs.google.com/spreadsheets/d/1uGAxFRjF34I5n-FF9qhM_A7jRJo-FNnZLGXSUWOFSFs/edit was not found on this server. That’s all we know.



Já revisei e alterei a URL, mas alguém sabe se existe algum outro lugar em que uma configuração incorreta pode estar causando este erro? Ou se existe outra URL… 🤔


Ah, eu refiz a integração em outro Bot e ocorreu o mesmo erro.


Com ajuda do cara que manja demais @Pedro_Lucas , encontrei meu erro:



image



O que deve ser colado no link é a parte que está com o blur, conforme ele mesmo detalhou no artigo mas eu não prestei atenção! Muito obrigado meu camarada. Sucesso e voa 🚀


Ola boa tarde, não consegui finalizar… e o pior, agora parece que nada mais funciona…


Eita, que erro que está dando?


onde vejo o erro? só se que fiz testes de contato e não tive resposta…


Só queria compartilhar um problema que eu tive e consegui resolver através da lendária arte de googlear.


Na hora de inserir os elemento na planilha, usei o link sugerido: https://sheets.googleapis.com/v4/spreadsheets/{{codigo da sua planilha}}/values/teste1!A:D:append?insertDataOption=INSERT_ROWS&responseDateTimeRenderOption=FORMATTED_STRING&valueInputOption=USER_ENTERED .


Porém, ele me retornava o erro unable to parse range e para resolvê-lo apenas tirei o teste1!, e o link ficou:


https://sheets.googleapis.com/v4/spreadsheets/{{codigo da sua planilha}}/values/A:D:append?insertDataOption=INSERT_ROWS&responseDateTimeRenderOption=FORMATTED_STRING&valueInputOption=USER_ENTERED .


Bom, não vi nada sobre o mesmo no tópico, mas ta ai caso alguem precisa um dia.


valeu pela dica, @Luiz_Gustavo1 🙂


Ótimo tutorial @Pedro_Lucas, só estou com uma dúvida pois não consegui que desse certo aqui.


No console aparece a mensagem:




Achei que tivesse dado certo porém realizamos alguns testes e não foi integrado na planilha os dados dos testes… Perdi algumas horas tentando arrumar mas não consegui 😦 .


Sabe me dizer alguma resolução pra isso?


Eu vi aqui e você não salvou o status da segunda req, salva o status e response, e manda pra gente, pra eu saber que erro que deu 🙂 só ir na req que manda pra planilha e preencher esses dois campos :>)


Desculpa, sou um pouco leigo ainda no assunto… quando você diz status e response você fala sobre esses campos?




Nesse caso o preenchimento deles é com que informação?


so coloca status e reposta e roda no depurar pra noix




Deu esse erro aqui


boa iniciativa, parabéns pelo tutorial.


ficou bom? conseguiu fazer?


Não fiz, sou design mas passei o olho por curiosidade, gosto de tecnologia e acompanho essas coisas, vi que está bem explicado, ao menos, está rico em detalhes com imagens que ajudam a interpretação.



Antes estudei programação e tenho amigos na área. Se um dia precisarem, irei indicar o fórum. abração


Fico feliz em ouvir, muito obrigado pelo feedback, forte abraço


@Pedro_Lucas, você é o cara! Deu certo aqui 😍 Esse projeto tá virando um monstro, hahah!


ahhh, @Thayna_Lima, seja bem-vinda! 🙂


Comente