JavaScript, HTML, CSS e... !
2 commenti

Utilizzo delle YouTube API

Recuperare le statistiche di YouTube in modo automatico con Google Apps Script

Poniamo di avere un canale YouTube e che ci interessi recuperare alcune informazioni dai propri video, come ad esempio il numero di visualizzazioni ottenute, in modo da tenerne sotto controllo l'andamento, ma dovremo anche fare i conti con i competitor che spuntano come funghi e per i quali nasce pertanto l'esigenza nel monitorare le loro evoluzioni su cui basare soluzioni strategiche da prendere in tempo utile. Inizialmente, se i video sono solo una decina, l'attività manuale è sicuramente la prima strada ma quando il numero dei video da tenere sott'occhio comincia a crescere (immaginiamo 100 o 1000 video) non rimane altro che cercare di automatizzare il processo per poter essere competitivi.

Con Google Apps Script e le API di YouTube l'ottenimento di queste informazioni diventa immediato e di facile gestione.

L'esempio presentato di seguito mostrerà come sia possibile, con poche righe di codice in Apps Script associato ad uno Spreadsheet (bounde-script), recuperare la lista degli id dei video di uno dei miei canali YouTube (che attualmente ospita alcuni video di vario genere al solo scopo illustrativo) e andarli a scrivere all'interno di uno Spreadsheet corredati di relativo titolo e visualizzazioni ricevute.
Le API utilizzate sono: YouTube.Search.listYouTube.Videos.list.

L'URL della pagina del canale presa in considerazione è il seguente:

https://www.youtube.com/channel/UCvkoXjpd6BdJ-uItnRZN8jQ?view_as=subscriber

Notare che l'URL del canale contiene una parte composta da caratteri apparentemente casuali, nel caso specifico 'UCvkoXjpd6BdJ-uItnRZN8jQ', questa stringa rappresenta l'id del canale e sarà utilizzata all'interno dello script per recuperare i video in esso presenti. Va da se che al posto dell'id del mio canale è possibile inserire qualsiasi altro identificativo di canale di YouTube di amici, competitor, playlist e quant'altro.

Uno screenshot rappresentativo dei video che saranno recuperati in modo automatico è quello presente in Fig. 1:



canale di youtube

Fig. 1 - Esempio di un canale di YouTube


Come primo passaggio è necessario aprire un nuovo Foglio di Google ed inserire nelle prime tre celle l'intestazione dei dati che saranno recuperati: Video ID, Titolo, Visite (Fig. 2).



spreadsheet preparato per ospitare le informazioni dei video recuperate tramite le API di YouTube

Fig. 2 - Spreadsheet preparato per ospitare le informazioni dei video recuperate tramite le API di YouTube


All'interno dello Spreadsheet aprire l'editor di script dalla voce di menu 'Strumenti -> Editor di script'.
Nell'editor inserire il seguente codice:

function getMyChannelVideoInfo() {
  
  // Recupera la lista degli id dei video di YouTube dal canale indicato
  var sheet_ref = SpreadsheetApp.getActiveSheet();  
  var res_videoId = '';
  var videoId_list = YouTube.Search.list('id', { channelId:'UCvkoXjpd6BdJ-uItnRZN8jQ', maxResults: 25 });
  var videoId_list_len = videoId_list.items.length;
  var arr_videoId = [];
  var j = 0;
  for (var i=0; i<videoId_list_len; i++) {
    res_videoId = videoId_list.items[i].id.videoId;
    if (res_videoId !== undefined) {
      arr_videoId[j] = [];
      arr_videoId[j].push(res_videoId);
      j = j + 1;
    }
  }  
  sheet_ref.getRange(2, 1, arr_videoId.length, 1).setValues(arr_videoId);
  
  // Recupera le informazioni dei video di YouTube in base al loro id
  var sheet_range = sheet_ref.getRange(2, 1, arr_videoId.length, 3);
  var sheet_range_values = sheet_range.getValues(); 
  var lastRow = sheet_range.getLastRow();
  var data = '';
  var item = '';
  var info = '';
  var videoId_values = '';
  var yy = 1;
  for (var y=0; y<lastRow-1; y++) {
    videoId_values = sheet_range_values[y][0];
    data = YouTube.Videos.list('snippet, statistics', { id: videoId_values });
    item = data.items[0];
    info = [item.snippet.title, item.statistics.viewCount];
    
    sheet_ref.getRange(yy+1, 2, 1, info.length).setValues([info]);
    yy = yy + 1;
  }
}

Sarà necessario abilitare le 'YouTube Data API' dal menu 'Risorse -> Servizi avanzati di Google ...' e successivamente anche nella 'Console API Google' (per maggiori informazioni sulla procedura fare riferimento all'articolo 'Abilitare l'uso delle API dei Servizi Avanzati nei progetti in Google Apps Script').
La prima volta che si esegue lo script verranno richieste le autorizzazioni necessarie che dovranno essere fornite (per maggiori informazioni sulla procedura fare riferimento all'articolo 'Flusso per l'Autorizzazione dei Google Services nei progetti in Apps Script').

Quello che il codice effettua è cercare, con l'API YouTube.Search.list, i video presenti all'interno del canale indicato recuperandone il relativo id per popolare un array bidimensionale in modo successivamente da inserire il suo contenuto nella prima colonna del foglio attivo dello Spreadsheet.
Viene quindi definito il range dello Sheet utile per recuperare sia la lista dei video appena inserita che le celle che andranno ad ospitare il titolo e le visite dei vari video. Queste informazioni sono recuperate tramite l'API YouTube.Videos.list e nello specifico grazie ai parametri 'snippet' e 'statistics' (dove oltre alle informazioni desiderate ne vengono fornite altre non utilizzate in questo contesto, come ad esempio i commenti ai video).

Il risultato delle due fasi consecutive del processo appena descritto è il seguente, Fig. 3:



spreadsheet con le informazioni dei video recuperate tramite le API di YouTube

Fig. 3 - Spreadsheet con le informazioni dei video recuperate tramite le API di YouTube


Per maggiori informazioni sul YouTube Service di Apps Script rimando alla documentazione ufficiale.
Può essere utile come risorsa anche quella contenente i codici di esempio per Apps Script direttamente nella pagina delle API di YouTube.

Tags

Michele Pisani

Michele Pisani

Sviluppatore Javascript ed esperto in Digital Analytics

L'esperienza nel settore Digital Analytics unita ad anni di sviluppo in Javascript ha trovato la massima espressione in Google Apps Script che mi ha permesso, con estrema facilità e poche righe di codice, di realizzare potenti applicazioni interattive e processi automatizzati integrati con i prodotti della G Suite.

Come contattarmi
scrivi un commento

2 Commenti

  1. Friday, July 2, 2021 alle ore 22:32 ivan vaghi

    provando questo esempio
    var response = YouTube.Videos.list( 'snippet,statistics', {"id":"Ks-_Mh1QhMc,c0KYU2j0TM4,eIho2S0ZahI"} );

    mi ritorna nel logger: "An unknown error has occurred, please try again later."

    hai idea del perche'?

    Rispondi a questo commento
    • Sunday, July 4, 2021 alle ore 09:20 Michele PisaniAutore

      Ciao Ivan,
      ho provato il tuo codice e a me dà errore sul primo parametro 'statistics', dai un occhio alla documentazione relativamente a quel tipo di dato.
      Probabilmente stai cercando di ottenere un'altra informazione, ad ogni modo ti segnalo che rispetto al mio esempio stai passando il parametro 'id' e non 'channelId', che sono due cose diverse.

      Rispondi a questo commento

Scrivi un commento

Il tuo indirizzo email non sarà pubblicato.I campi contrassegnati da un * sono obbligatori
Puoi utilizzare i seguenti tag nei commenti:
[bold]testo[/bold] se vuoi evidenziare un testo con il grassetto[code]function helloworld() { }[/code] se vuoi pubblicare una porzione di codice[url]https://www.appsscript.it[/url] se devi riferirti ad un indirizzo web