python - Google Analytics 非抽样报告:如何设置目标位置(Google Drive 或 GCS)?
问题描述
从 GA Management API 获取非抽样报告
我需要以编程方式下载谷歌分析非抽样报告,并最终将它们每天存储到 BigQuery 中。
我的第一步实际上是能够下载非抽样报告。
通过 GA 管理 API v3 导航,我可以使用 python 获取给定报告的元数据:
{
"id": "ONJ5uJntQ5Ku4U5vZ6z5tQ",
"kind": "analytics#unsampledReport",
"selfLink": "https://www.googleapis.com/analytics/v3/management/accounts/XXXX/webproperties/UA-XXXX/profiles/XXXX/unsampledReports/ONJ5uJntQ5Ku4U5vZ6z5tQ",
"title": "MCF Export 20201124 20201124",
"accountId": "XXXX",
"webPropertyId": "UA-XXXX",
"profileId": "XXXX",
"status": "COMPLETED",
"created": "2020-11-25T21:22:35.308Z",
"updated": "2020-11-25T21:24:13.695Z"
}
正如这篇相关文章中提到的:无法使用 Java 从 Google Analytics 下载非抽样报告
selflink 属性是资源的实际链接,但不是下载端点。
要 DL 报告,需要查询 GDrive OR GCS API。
我的问题是:如何判断报告必须去哪里?
就目前而言,在查询报告数据时,没有位置 URI,我仍然收到类似这个家伙的部分答案:为什么 Google Analytics API for Unsampled Reports 没有显示 Google Drive 下载链接?
这是官方的谷歌分析管理 API 文档:https ://developers.google.com/analytics/devguides/config/mgmt/v3/mgmtReference/management/unsampledReports/get
从以下代码:
analytics.management().unsampledReports().get(
accountId=ACCOUNT_ID,
webPropertyId=WEB_PROPERTY_ID,
profileId=PROFILE_ID,
unsampledReportId='XXXX'
).execute()
我应该得到:
{
"id": string,
"kind": "analytics#unsampledReport",
"selfLink": string,
"title": string,
"accountId": string,
"webPropertyId": string,
"profileId": string,
"start-date": string,
"end-date": string,
"metrics": string,
"dimensions": string,
"filters": string,
"segment": string,
"status": string,
"downloadType": string,
"driveDownloadDetails": {
"documentId": string
},
"cloudStorageDownloadDetails": {
"bucketId": string,
"objectId": string
},
"created": datetime,
"updated": datetime
}
尽管如此,我的回答仍然缺少任何下载信息......
我将非常感谢您的帮助。
解决方案
答案在 中driveDownloadDetails.documentId
,因此您必须使用 Google Drive API 通过其 ID 获取此文件。
我使用 Google Apps Script 制作了一个附加组件,以在电子表格中导出 Google Analytics 未采样数据,调用“ GA360 Unsampled ”,例如,我通过该信息获得了对文件的引用(然后管理 blob、parseCSV 等...):
...
fileId = driveDownloadDetails.documentId;
...
var file = DriveApp.getFileById(fileId);
显然,您将不得不使用您正在使用的语言的语法。
推荐阅读
- php - 致命错误:“继续”不在“循环”或“切换”上下文中
- javascript - Laravel 中的引导日期选择器
- c# - 为什么 PropertyDataCollection 对象将多条记录保存到数据库
- android - 在 Android 中使用 Stripe 实现 Sofort(支付网关)需要一些指导
- javascript - How to reference a specific list of cells that contain spreadsheet ids, to use in a loop?
- powershell - 根据 Powershell 中的项目数增加变量
- sql - 将当前时间(小时)与事务 SQL 中的时间范围进行比较
- javascript - fetchMore 是如何向组件返回数据的?
- spring - Aspectj 建议顺序
- c# - 如何使用 C# 从 ASP.NET 中的 SQL Server 数据库中检索和显示 GridView 中的值