Skip to content
This repository has been archived by the owner on Oct 31, 2023. It is now read-only.

docs: update quickstart samples to support the Data API v1 beta #50

Merged
merged 35 commits into from Mar 19, 2021
Merged
Show file tree
Hide file tree
Changes from 25 commits
Commits
Show all changes
35 commits
Select commit Hold shift + click to select a range
fc5a4d6
docs: added a sample
ikuleshov Sep 24, 2020
bfd3488
Merge branch 'master' into samples
ikuleshov Oct 7, 2020
0a74ac1
docs: usage instructions updated to use Python3
ikuleshov Nov 5, 2020
7f709d3
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Nov 5, 2020
4156c32
docs: updated sample to include main() method
ikuleshov Jan 5, 2021
a4be69d
Merge branch 'master' into samples
ikuleshov Jan 5, 2021
b59f40d
docs: update the sample to support the Google Analytics Data API v1 beta
ikuleshov Feb 26, 2021
fc29aa0
docs: update quickstart samples to support the Data API v1 beta
ikuleshov Mar 16, 2021
df8b945
docs: update quickstart samples to support the Data API v1 beta
ikuleshov Mar 16, 2021
745bb31
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 16, 2021
937aa44
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 16, 2021
d8a2803
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 16, 2021
f86c4d5
erge remote-tracking branch 'origin/master' into samples
ikuleshov Mar 16, 2021
0b51431
Merge remote-tracking branch 'origin/master' into samples
ikuleshov Mar 16, 2021
5555c63
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 16, 2021
ca55dfd
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 16, 2021
1fe6db5
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 16, 2021
050994a
separate the sample into separate methods to facilitate testing
ikuleshov Mar 16, 2021
c13340f
separate the sample into separate methods to facilitate testing
ikuleshov Mar 16, 2021
3d483d2
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 16, 2021
49a7ac7
fix: update formatting
ikuleshov Mar 17, 2021
4d0a023
fix: update formatting
ikuleshov Mar 17, 2021
a775e58
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
bf541c1
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
d6b0b2c
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
e07dd3d
add noxfile_config with a test property id value
ikuleshov Mar 17, 2021
618d2e7
add noxfile_config with a test property id value
ikuleshov Mar 17, 2021
f17deba
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
2967025
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
6b3d945
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
2b446af
fix: use the credentials json file provided during the test
ikuleshov Mar 17, 2021
7887b79
fix: use the credentials json file provided during the test
ikuleshov Mar 17, 2021
a3edcea
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
170e7ff
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
e5cd787
Merge branch 'samples' of github.com:ikuleshov/python-analytics-data …
ikuleshov Mar 17, 2021
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
101 changes: 34 additions & 67 deletions samples/snippets/quickstart.py
@@ -1,6 +1,6 @@
#!/usr/bin/env python

# Copyright 2020 Google Inc. All Rights Reserved.
# Copyright 2021 Google Inc. All Rights Reserved.

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

nit: We're supposed to leave the copyright alone unless it's a new file

#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -15,87 +15,54 @@
# limitations under the License.

"""Google Analytics Data API sample quickstart application.
Example usage:
python quickstart.py --property_id <PROPERTY_ID>

where <PROPERTY_ID> is the Google Analytics property id to use for a query.

Note: you need to have the Google Analytics Data API enabled in your project
prior to running this sample. Please visit the following URL and make sure the
API is enabled:

https://console.developers.google.com/apis/library/analyticsdata.googleapis.com

This application demonstrates the usage of the Analytics Data API using
service account credentials. For more information on service accounts, see

https://cloud.google.com/iam/docs/understanding-service-accounts

The following document provides instructions on setting service account
credentials for your application:

https://cloud.google.com/docs/authentication/production

In a nutshell, you need to:
1. Create a service account and download the key JSON file.

https://cloud.google.com/docs/authentication/production#creating_a_service_account
service account credentials.

2. Provide service account credentials using one of the following options:
- set the GOOGLE_APPLICATION_CREDENTIALS environment variable, the API
client will use the value of this variable to find the service account key
JSON file.
Before you start the application, please review the comments starting with
"TODO(developer)" and update the code to use correct values.

https://cloud.google.com/docs/authentication/production#setting_the_environment_variable

OR
- manually pass the path to the service account key JSON file to the API client
by specifying the keyFilename parameter in the constructor:
https://cloud.google.com/docs/authentication/production#passing_the_path_to_the_service_account_key_in_code

To install the latest published package dependency, execute the following:
pip install google-analytics-data
Usage:
pip3 install --upgrade google-analytics-data
python3 quickstart.py
"""
import argparse
# [START google_analytics_data_quickstart]
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import DateRange
from google.analytics.data_v1beta.types import Dimension
from google.analytics.data_v1beta.types import Metric
from google.analytics.data_v1beta.types import RunReportRequest

# [START ga_data_run_report]
from google.analytics.data_v1alpha import AlphaAnalyticsDataClient
from google.analytics.data_v1alpha.types import DateRange
from google.analytics.data_v1alpha.types import Dimension
from google.analytics.data_v1alpha.types import Entity
from google.analytics.data_v1alpha.types import Metric
from google.analytics.data_v1alpha.types import RunReportRequest

def sample_run_report(property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a simple report on a Google Analytics 4 property."""
# TODO(developer): Uncomment this variable and replace with your
# Google Analytics 4 property ID before running the sample.
# property_id = 'YOUR-GA4-PROPERTY-ID'

def sample_run_report(property_id):
"""Runs a simple report on a Google Analytics App+Web property."""

# [START google_analytics_data_initialize]
# Using a default constructor instructs the client to use the credentials
# specified in GOOGLE_APPLICATION_CREDENTIALS environment variable.
client = AlphaAnalyticsDataClient()
request = RunReportRequest(entity=Entity(property_id=property_id),
dimensions=[Dimension(name='city')],
metrics=[Metric(name='activeUsers')],
date_ranges=[DateRange(start_date='2020-03-31',
end_date='today')])
client = BetaAnalyticsDataClient()
# [END google_analytics_data_initialize]

# [START google_analytics_data_run_report]
request = RunReportRequest(
property="properties/" + str(property_id),
dimensions=[Dimension(name="city")],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="2020-03-31", end_date="today")],
)
response = client.run_report(request)
# [END google_analytics_data_run_report]

# [START google_analytics_data_run_report_response]
print("Report result:")
for row in response.rows:
print(row.dimension_values[0].value, row.metric_values[0].value)
# [END google_analytics_data_run_report_response]
# [END google_analytics_data_quickstart]


# [END ga_data_run_report]

if __name__ == "__main__":
parser = argparse.ArgumentParser(
description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter,
)
parser.add_argument(
"--property_id",
type=str,
required=True,
help="Google Analytics property ID to use for a query.",
)
args = parser.parse_args()
sample_run_report(args.property_id)
sample_run_report()
81 changes: 81 additions & 0 deletions samples/snippets/quickstart_json_credentials.py
@@ -0,0 +1,81 @@
#!/usr/bin/env python

# Copyright 2021 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Google Analytics Data API sample quickstart application.

This application demonstrates the usage of the Analytics Data API using
service account credentials from a JSON file downloaded from
the Google Cloud Console.

Before you start the application, please review the comments starting with
"TODO(developer)" and update the code to use correct values.

Usage:
pip3 install --upgrade google-analytics-data
python3 quickstart_json_credentials.py
"""
# [START google_analytics_data_quickstart]
from google.analytics.data_v1beta import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import DateRange
from google.analytics.data_v1beta.types import Dimension
from google.analytics.data_v1beta.types import Metric
from google.analytics.data_v1beta.types import RunReportRequest


def get_client(credentials_json_path=""):
"""Creates an API client instance."""
# [START google_analytics_data_initialize]
# TODO(developer): Uncomment this variable and replace with a valid path to
# the credentials.json file for your service account downloaded from the
# Cloud Console.
# credentials_json_path = '/path/to/credentials.json'

# Explicitly use service account credentials by specifying
# the private key file.
return BetaAnalyticsDataClient().from_service_account_json(credentials_json_path)
# [END google_analytics_data_initialize]


def sample_run_report(client, property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a simple report on a Google Analytics 4 property."""
# TODO(developer): Uncomment this variable and replace with your
# Google Analytics 4 property ID before running the sample.
# property_id = 'YOUR-GA4-PROPERTY-ID'

# [START google_analytics_data_run_report]
request = RunReportRequest(
property="properties/" + str(property_id),
dimensions=[Dimension(name="city")],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="2020-03-31", end_date="today")],
)
response = client.run_report(request)
# [END google_analytics_data_run_report]

print("Report result:")
for row in response.rows:
print(row.dimension_values[0].value, row.metric_values[0].value)


def main():
client = get_client()
sample_run_report(client)


# [END google_analytics_data_quickstart]

if __name__ == "__main__":
main()
28 changes: 28 additions & 0 deletions samples/snippets/quickstart_json_credentials_test.py
@@ -0,0 +1,28 @@
# Copyright 2020 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os

from google.analytics.data_v1beta import BetaAnalyticsDataClient

import quickstart_json_credentials


def test_quickstart(capsys):
TEST_PROPERTY_ID = os.getenv("TEST_PROPERTY_ID", "222596558")
quickstart_json_credentials.sample_run_report(
BetaAnalyticsDataClient(), TEST_PROPERTY_ID
)
out, _ = capsys.readouterr()
assert "Report result" in out
89 changes: 89 additions & 0 deletions samples/snippets/quickstart_oauth2.py
@@ -0,0 +1,89 @@
#!/usr/bin/env python

# Copyright 2021 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

"""Google Analytics Data API sample quickstart application.

This application demonstrates the usage of the Analytics Data API using
OAuth2 credentials.

Before you start the application, please review the comments starting with
"TODO(developer)" and update the code to use correct values.

Usage:
pip3 install --upgrade google-auth-oauthlib
pip3 install --upgrade google-analytics-data
python3 quickstart_oauth2.py
"""
# [START google_analytics_data_quickstart]
from google.analytics.data import BetaAnalyticsDataClient
from google.analytics.data_v1beta.types import DateRange
from google.analytics.data_v1beta.types import Dimension
from google.analytics.data_v1beta.types import Metric
from google.analytics.data_v1beta.types import RunReportRequest
from google_auth_oauthlib import flow


def sample_run_report(credentials=None, property_id="YOUR-GA4-PROPERTY-ID"):
"""Runs a simple report on a Google Analytics 4 property."""
# TODO(developer): Uncomment this variable and replace with your
# Google Analytics 4 property ID before running the sample.
# property_id = 'YOUR-GA4-PROPERTY-ID'

client = BetaAnalyticsDataClient(credentials=credentials)
request = RunReportRequest(
property="properties/" + str(property_id),
dimensions=[Dimension(name="city")],
metrics=[Metric(name="activeUsers")],
date_ranges=[DateRange(start_date="2020-03-31", end_date="today")],
)

response = client.run_report(request)

print("Report result:")
for row in response.rows:
print(row.dimension_values[0].value, row.metric_values[0].value)


def get_credentials():
"""Creates an OAuth2 credentials instance."""
# [START google_analytics_data_initialize]
appflow = flow.InstalledAppFlow.from_client_secrets_file(
"client_secrets.json",
scopes=["https://www.googleapis.com/auth/analytics.readonly"],
)
# TODO(developer): Update the line below to set the `launch_browser` variable.
# The `launch_browser` boolean variable indicates if a local server is used
# as the callback URL in the auth flow. A value of `True` is recommended,
# but a local server does not work if accessing the application remotely,
# such as over SSH or from a remote Jupyter notebook.
launch_browser = True
if launch_browser:
appflow.run_local_server()
else:
appflow.run_console()
return appflow.credentials
# [END google_analytics_data_initialize]


def main():
credentials = get_credentials()
sample_run_report(credentials)


# [END google_analytics_data_quickstart]

if __name__ == "__main__":
main()
24 changes: 24 additions & 0 deletions samples/snippets/quickstart_oauth2_test.py
@@ -0,0 +1,24 @@
# Copyright 2020 Google Inc. All Rights Reserved.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.

import os

import quickstart_oauth2


def test_quickstart(capsys):
TEST_PROPERTY_ID = os.getenv("TEST_PROPERTY_ID", "222596558")
quickstart_oauth2.sample_run_report(None, TEST_PROPERTY_ID)
out, _ = capsys.readouterr()
assert "Report result" in out
4 changes: 3 additions & 1 deletion samples/snippets/quickstart_test.py
Expand Up @@ -12,11 +12,13 @@
# See the License for the specific language governing permissions and
# limitations under the License.

import os

import quickstart


def test_quickstart(capsys):
TEST_PROPERTY_ID = '222596558'
TEST_PROPERTY_ID = os.getenv("TEST_PROPERTY_ID", "222596558")
quickstart.sample_run_report(TEST_PROPERTY_ID)
out, _ = capsys.readouterr()
assert "Report result" in out
1 change: 1 addition & 0 deletions samples/snippets/requirements.txt
@@ -1 +1,2 @@
google-analytics-data==0.4.0
google-auth-oauthlib==0.4.3