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.list e YouTube.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:
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).
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:
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.
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'?
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.