Quer aprender a fazer uma análise de dados do YouTube com VBA para automatizar e facilitar esse processo do seu canal?
Caso prefira esse conteúdo no formato de vídeo-aula, assista ao vídeo abaixo!
Para receber por e-mail o(s) arquivo(s) utilizados na aula, preencha:
Análise de Dados do YouTube com VBA – Usando a API do YouTube
Fala, Impressionadores! Na aula de hoje vamos mostrar como fazer algo muito legal que vocês podem ter que fazer alguma vez se lidam com Youtube: análise de dados do YouTube com VBA!
A ideia da aula de hoje é fazer uma análise de dados do YouTube com VBA. Está preparado?
Nós já temos um outro post aqui no Blog de como usar API no VBA, que complementa e detalha muito do que vamos mostrar na aula de hoje. É altamente recomendável que você assista essa aula antes do post de hoje.
Inicialmente, temos uma tabela pré-montada no Excel, e queremos retornar uma resposta que vai nos dar 500 vídeos do canal da Hashtag ordenados por mais visualizações é da “categoria” VBA, ou não.
Essas informações serão retornadas a partir dos vídeos e seus respectivos IDs do site do Youtube, mais especificamente falando das descrições dos vídeos.
Abaixo mostramos a tabela com as informações “esperadas” vazias, antes de executarmos o código, que vai receber as informações. Veja:
Ativar referências no VBA
Importantíssimo para a aula de hoje, e para o desempenho da API da forma como esperamos, teremos que ativar duas referências dentro do VBA.
Mais especificamente falando, serão as referências “Microsoft WinHTTP Services” (destacada abaixo) e também a “Microsoft Scripting Runtime”
Após ativá-las, poderemos partir para o código que vai desempenhar a API do Youtube no VBA, que está a seguir:
Sub APIYouTube()
'https://developers.google.com/youtube/v3/getting-started?hl=pt-br
'https://console.cloud.google.com/
Dim requisicao As New WinHttpRequest
Dim resposta As Object
Dim url As String, parametros As String
lin = 2
Do While Cells(lin, 1).Value <> ""
idVideo = Cells(lin, 1).Value
'chaveAPIYouTube = "Colocar sua chave da API aqui"
' Definir a URL e os parâmetros
url = "https://www.googleapis.com/youtube/v3/videos"
parametros = "?key=" & chaveAPIYouTube & "&id=" & idVideo & "&part=snippet&fields=items(snippet(description))"
' Enviar a requisição
requisicao.Open "Get", url & parametros
'requisicao.SetRequestHeader
requisicao.Send
' Tratamento de erros
If requisicao.Status <> 200 Then
MsgBox "Erro: " & requisicao.ResponseText
Exit Sub
End If
' Converter o JSON
Set resposta = JsonConverter.ParseJson(requisicao.ResponseText)
' Tratar as informações
Dim itens As Collection
Set itens = resposta("items")
On Error GoTo TratamentoDeErros
Set videoYT = itens(1)
On Error GoTo 0
If InStr(videoYT("snippet")("description"), "CURSO COMPLETO VBA IMPRESSIONADOR") > 0 Or InStr(videoYT("snippet")("description"), "esperavbaimpressionador") > 0 Then
Cells(lin, 4).Value = "Sim"
Else
Cells(lin, 4).Value = "Não"
End If
VoltarTratamentoErro:
lin = lin + 1
Loop
Exit Sub
TratamentoDeErros:
Resume VoltarTratamentoErro
End Sub
Explicações e comentários a respeito do código acima (APIYoutube):
- Dimensionar:
- a variável “requisicao” como sendo do tipo um novo objeto do tipo WinHttpRequest, que é um objeto da biblioteca que ativamos, a “Microsoft WinHTTP Services”
- a variável “resposta” como um objeto
- as variáveis “url” e “parametros” do tipo texto
- Armazenar o valor 2 na variável “linha”, porque a tabela de informações começa na 2ª linha
- Abrir uma estrutura de repetição do tipo Do While, com a condição “padrão” para continuar for verdadeira: o valor da primeira coluna, linha a linha (representada pela variável “lin”) for diferente de vazio (linha sem preenchimento). Ela vai fazer as seguintes ações repetidamente até essa condição ser falsa:
- Armazenar na variável “idVideo” o que estiver na primeira coluna, linha a linha
- Armazenar na variável “chaveAPIYoutube” a sua chave API do Youtube conseguida no site que indicamos
- Armazenar na variável “url” o texto que corresponde ao site exatamente que vamos acessar para pegar as informações, que é o link disponibilizado
- Armazenar na variável “parametros” os parâmetros variáveis do link da API, levando em consideração a “chaveAPIYoutube”, e o “idVideo”
- Abrir (do inglês “open”) o objeto que é representado pela variável “requisicao”, passando os argumentos “url” e “parametros”, dos quais ela vai pegar informações (get, em inglês)
- Passar para o cabeçalho da “requisicao” os parâmetros “padrão” informados pela API
- Dar o comando de “enviar” requisição (send, em inglês), que é de fato quando o VBA envia a requisição para o site
- Com um simples tratamento de erro, vamos verificar através de uma estrutura If se a propriedade “Status” da variável “requisicao” é diferente de 200 (porque essa resposta é a esperada quando uma resposta válida é retornada pela API). Caso o “Status” seja diferente de 200:
- Uma mensagem será gerada na tela informando “Erro”.
- A sub vai ser abortada, pela instrução Exit Sub
- Configurar a variável “resposta” para receber o objeto da biblioteca JSON, que vai ser responsável por retornar a resposta, em texto, da “requisicao”
- Dimensionar a variável “itens” como uma variável do tipo “Collection”, da biblioteca JSON
- Configurar a variável “itens” como sendo o termo “items” da requisição “resposta”
- Utilizar um tratamento de erros:
- Se der algum erro a partir desse comando, o código será levado diretamente para o “ponto” chamado de “TratamentoDeErros”, ao final do código
- Configurar a variável “videoYT” para receber o primeiro item da coleção “itens” (que vai ser o “snippet”, pois passamos somente ele como parâmetro)
- Não dando nenhum erro, o tratamento é “desconfigurado”. A linha “On Error GoTo 0” vai fazer o VBA a retornar para o tratamento de erros padrão do VBA, onde resume em caixas os erros apontados pelo próprio VBA, em relação ao código
- Tudo dando certo, seguiremos com o código utilizando de uma função InStr, que vai nos dar o indicativo da presença de um texto dentro de um texto, atrelada a uma estrutura If, que vai fazer uma comparação. Se na descrição do “snippet” (termo da coleção resposta da consulta da API) tivermos a cadeia de texto “CURSO COMPLETO VBA IMPRESSIONADOR” ou “esperavbaimpressionador” (textos esperados para uma descrição de vídeo do VBA do canal da Hashtag):
- Escrever “Sim” como resultado, na 4ª coluna da tabela, na linha representada pela variável “lin”
- Caso não existam as cadeias de texto em questão na resposta da requisição, escrever “Não” na na 4ª coluna da tabela, na linha representada pela variável “lin”
- Normalmente o código vai armazenar na variável “lin” o valor dela própria e mais uma unidade
- Caso ocorra um erro lá em cima no ponto “TratamentoDeErros”, o código vai “estar” lá embaixo e o código vai “voltar” para o ponto “VoltarTratamentoErro”, voltando à configuração original (“resetando”) o tratamento de erros
- Se encerra o código
- OBS: Para entender melhor sobre os tipos de dados no VBA, visite esse link oficial.
- OBS2: Lembrando que o site da API utilizada aqui na aula de hoje está nesse link.
- OBS3: Lembrando também que o site para conseguir a chave da API é esse aqui.
- OBS4: Para entender melhor sobre coleções, indicamos esse outro post aqui do Blog!
Rodando o código, e exibindo um resultado para a variável “videoYT” exemplo na caixa de verificação imediata do VBA, teremos:
Deixando o código rodar de uma vez só (sem pausas), teremos o seguinte resultado final:
Conclusão – Análise de Dados do YouTube com VBA
Hoje você aprendeu a lidar com a análise de dados do Youtube com VBA!
Mais especificamente conseguimos entender e ver como uma API no VBA para entender detalhes (a descrição) dos vídeos aqui do canal, e fazer verificações e análises diretamente deles!
Usamos conceitos importantes além de lidar com APIs, que foram: função de texto InStr, Estrutura If, Estrutura de repetição Do While; entre outras estruturas que falamos em outros posts aqui do Blog também!
Valeu, Impressionadores! Fique ligado no nosso canal do Youtube para mais conteúdo de VBA! Até o próximo post!
Hashtag Treinamentos
Para acessar outras publicações de VBA, clique aqui!
Expert em VBA e Power BI da Hashtag Treinamentos. Auxilia no suporte aos alunos da Hashtag Treinamentos e na criação de conteúdos para os que acompanham nossos canais.