无法添加用户时,如何通过Python API访问Google Analytics演示账户数据?
访问Google Analytics演示账户数据的替代方案
嘿,这个问题我之前碰到过,没法把服务账号添加到官方演示账户里确实有点卡壳,但有几个靠谱的思路可以试试:
1. 用BigQuery公共数据集直接查询
Google早就把Analytics演示账户的同步数据放到了BigQuery的公共数据集里,这是最稳妥的替代方案——不需要申请演示账户的权限,只要你的服务账号能访问BigQuery就行。
- 操作步骤:
- 先去Google Cloud控制台给你的服务账号添加
BigQuery Data Viewer角色,确保它拥有读取公共数据的权限 - 用Python的
google-cloud-bigquery库连接查询,数据集地址是bigquery-public-data.google_analytics_sample.ga_sessions_*,里面全是演示账户的会话数据 - 示例代码参考:
from google.cloud import bigquery from google.oauth2 import service_account # 加载服务账号密钥文件 credentials = service_account.Credentials.from_service_account_file('your-service-account-key.json') client = bigquery.Client(credentials=credentials, project='你的GCP项目ID') # 查询某天的访问量和页面浏览量 query = """ SELECT date, totals.visits, totals.pageviews FROM `bigquery-public-data.google_analytics_sample.ga_sessions_20170801` LIMIT 10 """ query_job = client.query(query) results = query_job.result() for row in results: print(f"日期: {row.date}, 访问量: {row.totals.visits}, 页面浏览量: {row.totals.pageviews}")
- 先去Google Cloud控制台给你的服务账号添加
2. 试试官方测试视图ID(限基础验证)
Google有个官方测试视图ID ga:12345678,对应演示账户的视图,你可以直接用这个ID结合服务账号调用Analytics Reporting API。不过要注意,这个测试端点的访问权限可能随时调整,能拿到的数据量和功能有限,只能用来验证API调用流程是否正常。
- 示例代码片段:
from google.oauth2 import service_account from googleapiclient.discovery import build SCOPES = ['https://www.googleapis.com/auth/analytics.readonly'] KEY_FILE_LOCATION = 'your-service-account-key.json' VIEW_ID = 'ga:12345678' def initialize_analyticsreporting(): credentials = service_account.Credentials.from_service_account_file( KEY_FILE_LOCATION, scopes=SCOPES) return build('analyticsreporting', 'v4', credentials=credentials) def get_report(analytics): return analytics.reports().batchGet( body={ 'reportRequests': [ { 'viewId': VIEW_ID, 'dateRanges': [{'startDate': '7daysAgo', 'endDate': 'today'}], 'metrics': [{'expression': 'ga:sessions'}], 'dimensions': [{'name': 'ga:date'}] }] } ).execute() def print_response(response): for report in response.get('reports', []): columnHeader = report.get('columnHeader', {}) dimensionHeaders = columnHeader.get('dimensions', []) metricHeaders = columnHeader.get('metricHeader', {}).get('metricHeaderEntries', []) for row in report.get('data', {}).get('rows', []): dimensions = row.get('dimensions', []) metrics = row.get('metrics', [])[0].get('values', []) print(f"日期: {dimensions[0]}, 会话数: {metrics[0]}") if __name__ == '__main__': analytics = initialize_analyticsreporting() response = get_report(analytics) print_response(response)划重点:如果这个测试ID突然访问不了,大概率是官方调整了权限,这时候直接转用BigQuery的方案就行。
3. 申请自己的Analytics沙盒账户
要是你需要完整的Analytics功能测试,不如直接申请一个Google Analytics沙盒账户——这个账户会提供完整的测试数据和管理权限,你想加服务账号还是其他用户都随便来,完全模拟真实环境,而且是免费的。申请流程在Google Analytics官方帮助里就能找到,操作很简单。
最后提醒一句:不管用哪个方案,都得先在Google Cloud控制台开启对应的API(比如BigQuery API或者Analytics Reporting API),不然服务账号没法正常调用哦。
内容的提问来源于stack exchange,提问作者ls_da3m0ns
相关产品推荐
相关产品推荐

