有没有办法使用 Node.js 按计划检索 Google Analytics 4 数据?

Is there a way to retrieve Google Analytics 4 data on a schedule using Node.js?

这就是我想要实现的:

  1. 请用户授权在 Google Analytics 4 属性(或 Universal Analytics,但我不想这样做)上收集他们的数据
  2. 每隔 n 小时以编程方式检索和存储数据

我能够通过 google 的 OAUTH2 请求授权并使用 gapi 调用 Reporting API v4 https://developers.google.com/analytics/devguides/reporting/core/v4前端。

但是,我不确定如何在没有用户交互的情况下按计划进行。我搜索了 Google 的 API 文档,我相信在 python https://developers.google.com/analytics/devguides/reporting/core/v4/quickstart/service-py 中有一种方法可以做到这一点,但我目前仅限于 Node 和浏览器。我想我可以在 python 中创建一个服务器来获取数据并与 Node 应用程序连接,但这是我试图避免的另一层复杂性。有没有办法在 Node 中做所有事情?

GCP API 的所有记录方式都允许每个人生成各种语言的客户端库,包括 node.js。用于分析报告的 node.js 客户端的文档是 here

关于如何在GCP上调度这个问题,我建议你使用Cloud Scheduler。这将命中云 运行 上的端点 运行,这将完成实际工作。或者,如果您在其他地方已经有服务 运行,您可以简单地在那里添加所需的端点并将 Cloud Scheduler 指向它。

我建议你的整体设计是这样的:

  • 构建一个网站,让用户完成 OAUTH2 登录过程, 请求相关的 Google 分析报告 API 范围 需要提出请求。
  • 将获得的凭据存储在他们的用户数据库中。(最好 Firestore 在数据存储模式下)
  • 设置一个 Cloud Run 服务(或其他任何服务),有两个端点
  • 迭代端点:遍历用户列表并添加任务 Cloud Tasks 为每一个下载端点。
  • 下载端点:获取用户 ID(例如作为查询参数)和 为该用户执行下载。您将需要加载 从数据库中获取用户的凭据并使用它来访问 报告 API.
  • 将下载的数据存储在所需的位置,例如云 存储、Firestore、Cloud SQL
  • 设置 Cloud Scheduler 以在所需的位置达到迭代终点 频率。

对于上述 GCP 服务,基本上除了 Analytics 之外的所有服务,您都可以使用 node.js 的“云”客户端,这些客户端可用 here

注意 : 你问的问题很宽泛,这个答案只是一个建议。您可以考虑其他最适合您的设计。