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

Quota limite per l'utente superata

Quota Error: User Rate Limit Exceeded

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).

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

0 Commenti

Non ci sono commenti

Nessuno ha ancora commentato questo articolo, fallo tu per primo!

scrivi un 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