Exception: Quota Error: User Rate Limit Exceeded

Jacobvdb picture Jacobvdb · Feb 11, 2013 · Viewed 8.2k times · Source

I have a Apps Script where I Loop trough my Google Analytics Account till I get to a certain Profile.
if (profileItems[i].getName() == "Dev Test" )
Than in another function (see bellow) I make the call to the Google Analytics API and always get the Exception thrown: Exception: Quota Error: User Rate Limit Exceeded

function getReportDataForProfile(profileId) {
var tableId = 'ga:' + profileId;
var startDate = getLastNdays(14);   // 2 weeks (a fortnight) ago.
var endDate = getLastNdays(0);      // Today.

var optArgs = {
  'dimensions': 'ga:keyword',              // Comma separated list of dimensions.
  'sort': '-ga:visits,ga:keyword',         // Sort by visits descending, then keyword.
  'segment': 'dynamic::ga:isMobile==Yes',  // Process only mobile traffic.
  'filters': 'ga:source==google',          // Display only google traffic.
  'start-index': '1',
  'max-results': '250'                     // Display the first 250 results.
};

//
//Exponential Backoff
//
for (var n=0; n<6; n++) {
try {
     var results = Analytics.Data.Ga.get(
     tableId,                  // Table id (format ga:xxxxxx).
     startDate,                // Start-date (format yyyy-MM-dd).
     endDate,                  // End-date (format yyyy-MM-dd).
     'ga:visits,ga:pageviews', // Comma seperated list of metrics.
     optArgs);
 } catch(e) {
   if (n == 5) {
     //var results = e;
     //throw new Error('Quota ERROR');
     throw (e) 
   } 
   Utilities.sleep((Math.pow(2,n)*1000) + (Math.round(Math.random() * 1000)));
  }    
}   
 return results;
}   
  • I increased the number of the Per user Limit in the API Console to 10.0
  • The used Porcentage is 6%
  • And I applied the Exponential Backoff
  • I also believe that by just asking for the Visits and PageViews I am not exagerating my number of calls.

The full code

Any ideias what is going on?

Answer

Viktor picture Viktor · Feb 24, 2013

Maybe you are exceeding the max request per profile per second. That looks like it's set to 10 (https://developers.google.com/analytics/devguides/reporting/core/v3/limits-quotas)