سرویس آنالیز

سرویس Analytics به شما این امکان را می دهد که از API مدیریت Google Analytics و API های گزارش در Apps Script استفاده کنید. این API ها به کاربران Analytics این امکان را می دهد که اطلاعاتی در مورد ساختار حساب خود دریافت کنند و گزارش هایی را در مورد نحوه عملکرد آن اجرا کنند.

ارجاع

برای اطلاعات دقیق در مورد این سرویس، به مستندات مرجع برای API های مختلف Google Analytics مراجعه کنید:

مانند همه سرویس های پیشرفته در Apps Script، سرویس Analytics از همان اشیا، روش ها و پارامترهای API عمومی استفاده می کند. برای اطلاعات بیشتر، نحوه تعیین امضای روش را ببینید.

برای گزارش مشکلات و یافتن پشتیبانی دیگر، به صفحات پشتیبانی مربوطه مراجعه کنید:

کد نمونه

کد نمونه زیر نسخه 3 مدیریت API.

فهرست ساختار حساب

نمونه تمام حساب‌های Google Analytics، ویژگی‌های وب و نمایه‌هایی را که کاربر فعلی می‌تواند به آنها دسترسی داشته باشد، فهرست می‌کند.

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

یک گزارش اجرا کنید

نمونه گزارشی را برای بازیابی 25 کلید واژه برتر و منبع ترافیک اجرا می کند و نتایج را در یک صفحه گسترده جدید ذخیره می کند.

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