Служба аналитики

Служба Analytics позволяет использовать API управления Google Analytics и API отчетов в Apps Script. Эти API дают пользователям Analytics возможность получать информацию о структуре своей учетной записи и создавать отчеты о ее работе.

Ссылка

Подробную информацию об этом сервисе можно найти в справочной документации по различным API Google Analytics:

Как и все расширенные службы в Apps Script, служба Analytics использует те же объекты, методы и параметры, что и общедоступный API. Дополнительные сведения см. в разделе Как определяются сигнатуры методов .

Чтобы сообщить о проблемах и получить другую поддержку, посетите соответствующие страницы поддержки:

Пример кода

Пример кода ниже версии 3 Management API.

Список структуры аккаунта

В образце перечислены все учетные записи, веб-ресурсы и профили Google Analytics, к которым имеет доступ текущий пользователь.

продвинутый/analytics.gs
/**
 * Lists Analytics accounts.
 */

function listAccounts() {
 
try {
   
const accounts = Analytics.Management.Accounts.list();
   
if (!accounts.items || !accounts.items.length) {
      console
.log('No accounts found.');
     
return;
   
}

   
for (let i = 0; i < accounts.items.length; i++) {
     
const account = accounts.items[i];
      console
.log('Account: name "%s", id "%s".', account.name, account.id);

     
// List web properties in the account.
      listWebProperties
(account.id);
   
}
 
} catch (e) {
   
// TODO (Developer) - Handle exception
    console
.log('Failed with error: %s', e.error);
 
}
}

/**
 * Lists web properites for an Analytics account.
 * @param  {string} accountId The account ID.
 */

function listWebProperties(accountId) {
 
try {
   
const webProperties = Analytics.Management.Webproperties.list(accountId);
   
if (!webProperties.items || !webProperties.items.length) {
      console
.log('\tNo web properties found.');
     
return;
   
}
   
for (let i = 0; i < webProperties.items.length; i++) {
     
const webProperty = webProperties.items[i];
      console
.log('\tWeb Property: name "%s", id "%s".',
          webProperty
.name, webProperty.id);

     
// List profiles in the web property.
      listProfiles
(accountId, webProperty.id);
   
}
 
} catch (e) {
   
// TODO (Developer) - Handle exception
    console
.log('Failed with error: %s', e.error);
 
}
}

/**
 * Logs a list of Analytics accounts profiles.
 * @param  {string} accountId     The Analytics account ID
 * @param  {string} webPropertyId The web property ID
 */

function listProfiles(accountId, webPropertyId) {
 
// Note: If you experience "Quota Error: User Rate Limit Exceeded" errors
 
// due to the number of accounts or profiles you have, you may be able to
 
// avoid it by adding a Utilities.sleep(1000) statement here.
 
try {
   
const profiles = Analytics.Management.Profiles.list(accountId,
        webPropertyId
);

   
if (!profiles.items || !profiles.items.length) {
      console
.log('\t\tNo web properties found.');
     
return;
   
}
   
for (let i = 0; i < profiles.items.length; i++) {
     
const profile = profiles.items[i];
      console
.log('\t\tProfile: name "%s", id "%s".', profile.name,
          profile
.id);
   
}
 
} catch (e) {
   
// TODO (Developer) - Handle exception
    console
.log('Failed with error: %s', e.error);
 
}
}

Запустить отчет

Образец запускает отчет для получения 25 самых популярных ключевых слов и источников трафика и сохраняет результаты в новой электронной таблице.

продвинутый/analytics.gs
/**
 * Runs a report of an Analytics profile ID. Creates a sheet with the report.
 * @param  {string} profileId The profile ID.
 */

function runReport(profileId) {
 
const today = new Date();
 
const oneWeekAgo = new Date(today.getTime() - 7 * 24 * 60 * 60 * 1000);

 
const startDate = Utilities.formatDate(oneWeekAgo, Session.getScriptTimeZone(),
     
'yyyy-MM-dd');
 
const endDate = Utilities.formatDate(today, Session.getScriptTimeZone(),
     
'yyyy-MM-dd');

 
const tableId = 'ga:' + profileId;
 
const metric = 'ga:visits';
 
const options = {
   
'dimensions': 'ga:source,ga:keyword',
   
'sort': '-ga:visits,ga:source',
   
'filters': 'ga:medium==organic',
   
'max-results': 25
 
};
 
const report = Analytics.Data.Ga.get(tableId, startDate, endDate, metric,
      options
);

 
if (!report.rows) {
    console
.log('No rows returned.');
   
return;
 
}

 
const spreadsheet = SpreadsheetApp.create('Google Analytics Report');
 
const sheet = spreadsheet.getActiveSheet();

 
// Append the headers.
 
const headers = report.columnHeaders.map((columnHeader) => {
   
return columnHeader.name;
 
});
  sheet
.appendRow(headers);

 
// Append the results.
  sheet
.getRange(2, 1, report.rows.length, headers.length)
     
.setValues(report.rows);

  console
.log('Report spreadsheet created: %s',
      spreadsheet
.getUrl());
}