L'utilizzo delle API di Google è soggetto a dei limiti di quota, per fare un esempio, uno dei casi più comuni per chi lavora nell'automatizzazione dei processi nella Digital Analytics riguarda le restrizioni per l'uso delle Management APIs e Reporting APIs (Limits and Quotas on API Requests).
Poniamo il caso più banale di voler recuperare l'elenco egli Account, delle Proprietà e delle Viste associate ai relativi Account, di Google Analytics per i quali l'utente ha accesso.
In base al numero di Account (fino a 100) e di Proprietà (fino a 50) l'esecuzione del nostro codice potrebbe non andare a buon fine per via dell'errore 'Quota Error: User Rate Limit Exceeded' causato appunto dal superamento del numero di richieste consentito.
Nel caso specifico potrebbe essere superato il numero massimo consentito di 10 query per secondo per utente (come da documentazione tecnica consultabile tramite il link precedentemente fornito).
Per ovviare a questo inconveniente è possibile avvalersi si un particolare metodo della classe Utilities di Google Apps Script, in particolare 'sleep':
sleep(milliseconds)
L'effetto di tale metodo è quello di mettere in pausa lo script per il numero di millisecondi specificato (fino ad un massimo consentito di 300000, ovvero 5 minuti).
Un esempio pratico di utilizzo può essere osservato nel seguente codice:
function listProfiles(accountId, webPropertyId) {
Utilities.sleep(200); // <-- mette lo script in pausa per 200 millisecondi
var arr_view = [];
var profiles = Analytics.Management.Profiles.list(accountId, webPropertyId);
if (profiles.items && profiles.items.length) {
for (var i = 0; i < profiles.items.length; i++) {
var profile = profiles.items[i];
Logger.log('Proprietà: nome "%s", id "%s".', profile.name, profile.id);
}
} else {
Logger.log('Attenzione! Nessuna Proprietà trovata');
}
}
Nel caso dell'esempio lo sleep è inserito all'interno della funzione designata al recupero dell'elenco delle Viste, per gli Account e le Proprietà passati (considerando che tale funzione sia chiamata consecutivamente n volte quante sono le combinazioni di Account e Proprietà disponibili), subito prima (anche subito dopo non avrebbe cambiato il risultato) dell'API interrgata Analytics.Management.Profiles.list(accountId, webPropertyId) al fine di intervallare le chiamate l'una dall'altra con 200 ms (in questo modo risulta possibile rientrare nei limiti delle 10 query al secondo).
Non ci sono commenti
Nessuno ha ancora commentato questo articolo, fallo tu per primo!
scrivi un commento