Blog

Postado em em 2 de dezembro de 2022

Análise de Dados do YouTube com VBA – Usando a API do YouTube

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:

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: analisando dados do canal do YouTube com VBA!

A ideia da aula de hoje é fazer uma análise de dados do canal 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:
    • 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”
Análise de Dados do YouTube com VBA
    • 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

Rodando o código, e exibindo um resultado para a variável “videoYT” exemplo na caixa de verificação imediata do VBA, teremos:

Análise de Dados do YouTube com VBA
Como usar API do Youtube

Deixando o código rodar de uma vez só (sem pausas), teremos o seguinte resultado final:

Análise de Dados do YouTube com VBA
Analisando dados do Youtube com VBA

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!


Quer aprender mais sobre VBA com um minicurso básico gratuito?

Quer sair do zero em Excel e virar uma referência na sua empresa? Matricule-se agora mesmo no Excel Impressionador!