Usługa Analytics

Usługa Analytics umożliwia korzystanie z interfejsu API zarządzania Google Analytics i interfejsów API do raportowania w Apps Script. Dzięki tym interfejsom API użytkownicy Analytics mogą uzyskać informacje o strukturze konta i generować raporty o jego skuteczności.

Dokumentacja

Szczegółowe informacje o tej usłudze znajdziesz w dokumentacji różnych interfejsów API Google Analytics:

Podobnie jak wszystkie usługi zaawansowane w Apps Script, usługa Analytics korzysta z tych samych obiektów, metod i parametrów co publiczny interfejs API. Więcej informacji znajdziesz w artykule Jak określane są podpisy metod.

Aby zgłosić problemy i znaleźć inną pomoc, odwiedź odpowiednie strony pomocy:

Przykładowy kod

Przykładowy kod poniżej wersji 3 interfejsu Management API.

Wyświetlenie struktury konta

W przykładzie pokazujemy wszystkie konta, usługi internetowe i profile Google Analytics, do których bieżący użytkownik ma dostęp.

advanced/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);
  }
}

Generowanie raportu

Na podstawie tego przykładu wygenerujemy raport, który pobierze 25 najczęstszych słów kluczowych oraz źródeł wizyt, a wyniki zostaną zapisane w nowym arkuszu kalkulacyjnym.

advanced/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());
}