如何通过脚本定期导出Google Play关联设备与版本的崩溃、ANR统计数据
需求实现可行性确认
该需求完全可以通过脚本自动化实现,不需要依赖Google Play Console后台手动操作。
两种实现方案
方案1:调用Google Play Developer Reporting API直接获取聚合结果
这是最高效的方案,官方API原生支持多维度聚合,不需要你自行关联不同维度的数据:
- 请求时在
dimensions参数指定["date", "versionCode", "deviceModel"]三个维度,metrics参数指定["crashCount", "anrCount"]两个指标,接口返回的原始数据就已经包含你需要的「日期、应用版本、设备、日崩溃量、日ANR量」全部字段 - 仅统计最新版本的需求可以通过
filter参数实现,直接设置过滤条件为versionCode = 最新版本的版本号,和后台手动添加版本过滤器的效果完全一致 - 参考请求参数示例:
# 已完成服务账号鉴权后的请求参数构造 request_params = { "parent": "apps/你的应用包名", "body": { "dimensions": ["date", "versionCode", "deviceModel"], "metrics": ["crashCount", "anrCount"], "timelineSpec": { "startTime": "2024-01-01T00:00:00Z", "endTime": "2024-01-31T23:59:59Z" }, "filter": "versionCode = 123" # 替换为你的最新应用版本号 } }
方案2:基于已导出的CSV报告做二次聚合
如果你已经可以正常导出完整的崩溃ANR CSV报告,不需要额外调用接口,直接用Python做数据清洗聚合即可:
- 导出的原始报告本身就包含所有维度和指标字段,只需要做筛选、分组聚合两步操作即可得到目标表格
- 参考代码示例:
import pandas as pd # 读取从Google Play Console导出的原始报告文件 raw_df = pd.read_csv("play_console_crash_anr_export.csv") # 筛选最新应用版本 latest_version_code = raw_df["versionCode"].max() filtered_df = raw_df[raw_df["versionCode"] == latest_version_code] # 按目标维度分组统计 stat_result = filtered_df.groupby(["date", "versionCode", "deviceModel"], as_index=False).agg( 日崩溃量=("crash_count", "sum"), 日ANR量=("anr_count", "sum") ) # 导出结果表格 stat_result.to_csv("target_crash_anr_stat.csv", index=False)
注意事项
- 服务账号需要提前在Google Play Console的权限管理中授予「查看应用和财务数据」权限,否则会出现接口鉴权失败/无数据返回的问题
- 设备维度可以根据你的实际需求调整为设备品牌、安卓系统版本等,API和导出报告均支持多个设备相关维度选择
- 单次查询的日期范围不要超过90天,超出范围可以分批次查询后合并结果
内容的提问来源于stack exchange,提问作者Klemen Vrhovec
相关产品推荐
相关产品推荐

