<html><body>
<style>

body, h1, h2, h3, div, span, p, pre, a {
  margin: 0;
  padding: 0;
  border: 0;
  font-weight: inherit;
  font-style: inherit;
  font-size: 100%;
  font-family: inherit;
  vertical-align: baseline;
}

body {
  font-size: 13px;
  padding: 1em;
}

h1 {
  font-size: 26px;
  margin-bottom: 1em;
}

h2 {
  font-size: 24px;
  margin-bottom: 1em;
}

h3 {
  font-size: 20px;
  margin-bottom: 1em;
  margin-top: 1em;
}

pre, code {
  line-height: 1.5;
  font-family: Monaco, 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', 'Lucida Console', monospace;
}

pre {
  margin-top: 0.5em;
}

h1, h2, h3, p {
  font-family: Arial, sans serif;
}

h1, h2, h3 {
  border-bottom: solid #CCC 1px;
}

.toc_element {
  margin-top: 0.5em;
}

.firstline {
  margin-left: 2 em;
}

.method  {
  margin-top: 1em;
  border: solid 1px #CCC;
  padding: 1em;
  background: #EEE;
}

.details {
  font-weight: bold;
  font-size: 14px;
}

</style>

<h1><a href="analytics_v3.html">Google Analytics API</a> . <a href="analytics_v3.data.html">data</a> . <a href="analytics_v3.data.ga.html">ga</a></h1>
<h2>Instance Methods</h2>
<p class="toc_element">
  <code><a href="#get">get(ids, start_date, end_date, metrics, max_results=None, filters=None, dimensions=None, include_empty_rows=None, sort=None, samplingLevel=None, segment=None, start_index=None, output=None)</a></code></p>
<p class="firstline">Returns Analytics data for a view (profile).</p>
<h3>Method Details</h3>
<div class="method">
    <code class="details" id="get">get(ids, start_date, end_date, metrics, max_results=None, filters=None, dimensions=None, include_empty_rows=None, sort=None, samplingLevel=None, segment=None, start_index=None, output=None)</code>
  <pre>Returns Analytics data for a view (profile).

Args:
  ids: string, Unique table ID for retrieving Analytics data. Table ID is of the form ga:XXXX, where XXXX is the Analytics view (profile) ID. (required)
  start_date: string, Start date for fetching Analytics data. Requests can specify a start date formatted as YYYY-MM-DD, or as a relative date (e.g., today, yesterday, or 7daysAgo). The default value is 7daysAgo. (required)
  end_date: string, End date for fetching Analytics data. Request can should specify an end date formatted as YYYY-MM-DD, or as a relative date (e.g., today, yesterday, or 7daysAgo). The default value is yesterday. (required)
  metrics: string, A comma-separated list of Analytics metrics. E.g., 'ga:sessions,ga:pageviews'. At least one metric must be specified. (required)
  max_results: integer, The maximum number of entries to include in this feed.
  filters: string, A comma-separated list of dimension or metric filters to be applied to Analytics data.
  dimensions: string, A comma-separated list of Analytics dimensions. E.g., 'ga:browser,ga:city'.
  include_empty_rows: boolean, The response will include empty rows if this parameter is set to true, the default is true
  sort: string, A comma-separated list of dimensions or metrics that determine the sort order for Analytics data.
  samplingLevel: string, The desired sampling level.
    Allowed values
      DEFAULT - Returns response with a sample size that balances speed and accuracy.
      FASTER - Returns a fast response with a smaller sample size.
      HIGHER_PRECISION - Returns a more accurate response using a large sample size, but this may result in the response being slower.
  segment: string, An Analytics segment to be applied to data.
  start_index: integer, An index of the first entity to retrieve. Use this parameter as a pagination mechanism along with the max-results parameter.
  output: string, The selected format for the response. Default format is JSON.
    Allowed values
      dataTable - Returns the response in Google Charts Data Table format. This is useful in creating visualization using Google Charts.
      json - Returns the response in standard JSON format.

Returns:
  An object of the form:

    { # Analytics data for a given view (profile).
    "kind": "analytics#gaData", # Resource type.
    "rows": [ # Analytics data rows, where each row contains a list of dimension values followed by the metric values. The order of dimensions and metrics is same as specified in the request.
      [
        "A String",
      ],
    ],
    "containsSampledData": True or False, # Determines if Analytics data contains samples.
    "columnHeaders": [ # Column headers that list dimension names followed by the metric names. The order of dimensions and metrics is same as specified in the request.
      {
        "dataType": "A String", # Data type. Dimension column headers have only STRING as the data type. Metric column headers have data types for metric values such as INTEGER, DOUBLE, CURRENCY etc.
        "columnType": "A String", # Column Type. Either DIMENSION or METRIC.
        "name": "A String", # Column name.
      },
    ],
    "totalResults": 42, # The total number of rows for the query, regardless of the number of rows in the response.
    "itemsPerPage": 42, # The maximum number of rows the response can contain, regardless of the actual number of rows returned. Its value ranges from 1 to 10,000 with a value of 1000 by default, or otherwise specified by the max-results query parameter.
    "totalsForAllResults": { # Total values for the requested metrics over all the results, not just the results returned in this response. The order of the metric totals is same as the metric order specified in the request.
      "a_key": "A String", # Key-value pair for the total value of a metric. Key is the metric name and the value is the total value for that metric.
    },
    "dataTable": {
      "rows": [
        {
          "c": [
            {
              "v": "A String",
            },
          ],
        },
      ],
      "cols": [
        {
          "type": "A String",
          "id": "A String",
          "label": "A String",
        },
      ],
    },
    "sampleSize": "A String", # The number of samples used to calculate the result.
    "dataLastRefreshed": "A String", # The last refreshed time in seconds for Analytics data.
    "query": { # Analytics data request query parameters.
      "max-results": 42, # Maximum results per page.
      "sort": [ # List of dimensions or metrics based on which Analytics data is sorted.
        "A String",
      ],
      "dimensions": "A String", # List of analytics dimensions.
      "start-date": "A String", # Start date.
      "start-index": 42, # Start index.
      "segment": "A String", # Analytics advanced segment.
      "ids": "A String", # Unique table ID.
      "metrics": [ # List of analytics metrics.
        "A String",
      ],
      "samplingLevel": "A String", # Desired sampling level
      "filters": "A String", # Comma-separated list of dimension or metric filters.
      "end-date": "A String", # End date.
    },
    "previousLink": "A String", # Link to previous page for this Analytics data query.
    "nextLink": "A String", # Link to next page for this Analytics data query.
    "profileInfo": { # Information for the view (profile), for which the Analytics data was requested.
      "webPropertyId": "A String", # Web Property ID to which this view (profile) belongs.
      "internalWebPropertyId": "A String", # Internal ID for the web property to which this view (profile) belongs.
      "tableId": "A String", # Table ID for view (profile).
      "profileId": "A String", # View (Profile) ID.
      "profileName": "A String", # View (Profile) name.
      "accountId": "A String", # Account ID to which this view (profile) belongs.
    },
    "id": "A String", # Unique ID for this data response.
    "selfLink": "A String", # Link to this page.
    "sampleSpace": "A String", # Total size of the sample space from which the samples were selected.
  }</pre>
</div>

</body></html>