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.



@Pedro_Lucas HELPME!!



fiz tudo direitinho, mas aparece esse mesmo erro, mas sem a URL:





Alguma ideia do que pode ter acontecido?


Abraço!!


nu tava de feria só fui ver hoje, ainda precisando de ajuda?


oi @Pedro_Lucas , SIIIIM! Help meee!


Você tem que dar uma lhada novamente na parte do google palyground,





Caso fique alguma dúvida fico a disposição


To tentando integrar o sheets, mas não sei como autorizar a URL que aparece no erro, como que autoriza?


Aqui ó





Só seguir o que ta ai


Tutorial completo e bem sucinto! Eu senti falta de uma explicação sobre os blocos que vão extrair as informações… Podemos enviar os dados para as planilhas no mesmo bloco que recebemos as informações ? Outra coisa, como podemos ler variáveis de menu de seleção do usuário?


Parabéns, me ajudou muito.



Uma dúvida, teria como fazer o update na célula da planilha?


Estou realizando basicamente atualmente 3 inserts


1 quando o cliente entra no BOT Antes do Desk sem ticket


1 quando o cliente finaliza o Atendimento pelo Desk já com o ticket


1 quando o cliente realiza o NPS


Criei até um ID próprio mas não sei como atualizar uma linha específica por esse id



fica mais ou menos assim no sheets:



ID1 |  nome  | tag |   equipe  | ticket | teste  

================================================

ID1 | Fulano | --- | --------- | ------ | ------ =>(entrou no bot)

ID1 | Fulano | ok | comercial | 01234 | ------ =>(fechou atendimeto)

ID1 | Fulano | ok | comercial | 01234 | nota-5 =>(deu nota)



se tiverem uma luz…


Boa tarde, estou seguindo o passo a passo do manual porém travei nesta parte e não consigo concluir a integração. Alguém poderia dar uma luz de como resolver?




Olá Robson, seja bem vindo a comunidade!


Aqui está a solução para sua questão.




eu tenho a solução é só complexa demais pra mandar aqui, talvez um novo post?


mas assim, d´pra fazer e faço muito


@Pedro_Lucas “eu tenho a solução é só complexa demais pra mandar aqui, talvez um novo post?”


Manda bala. será super útil pra mais gente


Olá, blipers, preciso de uma ajudinha. =)



Não estou conseguindo implementar o meu bot com o google sheets, alguém consegue me ajudar??




ainda precisa de ajuda rei?


Brigadão Pedro, deu certinho aqui. =)


Ola pessoal, preciso de um help…



Primeiramente quero agradecer pelo tutorial perfeito… Parabéns.



Toda integração deu certo, porém agora estou acrescentando para registrar as tags de finalização. Mas sempre que coloco para registrar as tags … não envia para a planilha.



Segue print do status.




Se alguém puder me ajudar, no que estou errando, se eu retirar para enviar as tags começa registrar normalmente.


é que as tags vão como lista tente transformar em strng antes de enviar, pois a lista não é, aceita pelo google


O link de vocês no passo: " Insira nos URIs de Redirecionamento Autorizados os seguintes links do portal: https://www.portal.blip.ai/application " está dando erro no acesso a esse link, pode me ajudar pfv?



Boa tarde, primeiramente parabéns pelo tutorial! Preciso de uma ajuda, estou tentando enviar para a planilha o nome do atendente e o numero do ticket mais não estou conseguindo… Alguém pode me dar um help??


Ao testar no playground do google a requisição é feita e executada perfeitamente, utilizando os dados presentes no blip, porém, quando testo em produção não acontece nada, existe algum console que posso ver as requisições feitas pelo bot?

no playground:

 

 
HTTP/1.1 200 OK Content-length: 294 X-xss-protection: 0 X-content-type-options: nosniff Transfer-encoding: chunked Vary: Origin, X-Origin, Referer X-l2-request-path: l2-managed-6 Server: ESF -content-encoding: gzip Cache-control: private Date: Fri, 04 Oct 2024 19:55:45 GMT X-frame-options: SAMEORIGIN Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-type: application/json; charset=UTF-8
{  "spreadsheetId": "******ePdSBB1SaxIldx7QV9gk9IV8dnPlJfF-RBz_4",   "tableRange": "index!A1:K5",   "updates": {    "spreadsheetId": "*******ePdSBB1SaxIldx7QV9gk9IV8dnPlJfF-RBz_4",     "updatedRange": "index!A6:E6",     "updatedCells": 5,     "updatedRows": 1,     "updatedColumns": 5  }}no blip builder

 


Ao testar no playground do google a requisição é feita e executada perfeitamente, utilizando os dados presentes no blip, porém, quando testo em produção não acontece nada, existe algum console que posso ver as requisições feitas pelo bot?

no playground:

 

 
HTTP/1.1 200 OK Content-length: 294 X-xss-protection: 0 X-content-type-options: nosniff Transfer-encoding: chunked Vary: Origin, X-Origin, Referer X-l2-request-path: l2-managed-6 Server: ESF -content-encoding: gzip Cache-control: private Date: Fri, 04 Oct 2024 19:55:45 GMT X-frame-options: SAMEORIGIN Alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000 Content-type: application/json; charset=UTF-8
{  "spreadsheetId": "******ePdSBB1SaxIldx7QV9gk9IV8dnPlJfF-RBz_4",   "tableRange": "index!A1:K5",   "updates": {    "spreadsheetId": "*******ePdSBB1SaxIldx7QV9gk9IV8dnPlJfF-RBz_4",     "updatedRange": "index!A6:E6",     "updatedCells": 5,     "updatedRows": 1,     "updatedColumns": 5  }}no blip builder

 

 

 

Olá @otavio.marciano tudo bem ? 

 

Você pode ver os dados da request pelo debug do bot : 

 


Comente