集成 Google Analytics(分析)

借助 Google Analytics(分析)平台,您可以衡量用户在各种设备和环境中与您的业务互动的情况。Google Analytics(分析)提供用于收集、存储、处理和报告这些用户互动数据的资源。

您可以在客户端和服务器端收集分析数据。

客户端分析数据收集

借助 Google Analytics API 和 SDK,您可以分析用户与您的内容与营销活动的互动情况。您可以在 Google Analytics(分析)用户界面中查看用户互动数据或使用 Reporting API 提取这些数据。如需详细了解客户端分析数据收集功能,请根据您的客户端类型点击以下链接:

  • Web 跟踪 (analytics.js) - 衡量用户与网站或 Web 应用的互动情况。
  • Android - 衡量用户与 Android 应用的互动情况。
  • iOS - 衡量用户与 iOS 应用的互动情况。
  • Measurement Protocol - 利用此低层级协议衡量任何环境中的用户互动情况。

服务器端分析数据收集

虽然 App Engine 提供了用于记录应用事件的机制,但您仍然可以选择使用 Google Analytics(分析)跟踪特定的服务器端事件,以便您能够进行如下操作:

  • 分析历史数据 - 使用 App Engine 时,您只能配置日志文件的最长保留天数或者最大大小,超过该限制的日志文件将无法再查看。如果选择在 Google Analytics(分析)中跟踪事件,那么数据保留期会长得多,让您能查看很早之前的事件数据。
  • 跟踪关键事件 - 应用的各种组件都可以向日志文件写入数据,因而可能导致日志文件过于冗杂。借助事件跟踪,您可以精确定位关键事件,并跟踪这些事件和某些元数据。
  • 利用用户界面 - 利用 Google Analytics(分析)功能丰富的用户界面,您可以直观呈现、报告和导出这些服务器端事件。

如需启用服务器端分析数据收集功能,您可以使用 HTTP 客户端并通过 Google Analytics Measurement Protocol 发出 HTTP 请求。如需了解详情,请参阅 Google Analytics(分析)开发者指南中的事件跟踪部分。

示例应用

以下示例应用显示了如何跟踪 App Engine 应用中的事件。该应用发出 HTTP 请求并将事件的相关数据发布到 Google Analytics(分析)。

在 App Engine 上使用 Google Analytics Measurement Protocol 之前,请按照以下步骤操作:

  1. 创建 Universal Analytics 媒体资源并获取跟踪 ID

  2. 将环境变量与跟踪 ID 一起添加到 app.standard.yaml 中,如以下示例应用所示:

    env_variables:
      GA_TRACKING_ID: YOUR_TRACKING_ID
  3. 在本地运行示例应用之前,请设置应用所需的环境变量:

    export GA_TRACKING_ID=YOUR_TRACKING_ID
    npm install
    
  4. 使用命令行在本地运行示例代码。例如:

    npm start
    

  5. 将以下代码集成到 App Engine 应用中,以便将事件跟踪数据发布到 Google Analytics(分析):

    const express = require('express');
    const fetch = require('node-fetch');
    
    const app = express();
    app.enable('trust proxy');
    
    // The following environment variable is set by app.yaml when running on App
    // Engine, but will need to be set manually when running locally. See README.md.
    const {GA_TRACKING_ID} = process.env;
    
    const trackEvent = (category, action, label, value) => {
      const data = {
        // API Version.
        v: '1',
        // Tracking ID / Property ID.
        tid: GA_TRACKING_ID,
        // Anonymous Client Identifier. Ideally, this should be a UUID that
        // is associated with particular user, device, or browser instance.
        cid: '555',
        // Event hit type.
        t: 'event',
        // Event category.
        ec: category,
        // Event action.
        ea: action,
        // Event label.
        el: label,
        // Event value.
        ev: value,
      };
    
      return fetch('http://www.google-analytics.com/debug/collect', {
        params: data,
      });
    };
    
    app.get('/', async (req, res, next) => {
      // Event value must be numeric.
      try {
        await trackEvent(
          'Example category',
          'Example action',
          'Example label',
          '100'
        );
        res.status(200).send('Event tracked.').end();
      } catch (error) {
        // This sample treats an event tracking error as a fatal error. Depending
        // on your application's needs, failing to track an event may not be
        // considered an error.
        next(error);
      }
    });
    
    const PORT = parseInt(process.env.PORT) || 8080;
    app.listen(PORT, () => {
      console.log(`App listening on port ${PORT}`);
      console.log('Press Ctrl+C to quit.');
    });
    

如果您在 Google Analytics(分析)管理控制台中启用了此设置,以排除来自“蜘蛛”程序和机器人程序的流量,或者您使用的是 Google Analytics(分析)4(它会自动过滤此流量),则可能看不到来自 App Engine 客户端的 Analytics(分析)结果。这些场景会过滤掉默认的 App Engine 用户代理。如需查看 App Engine 结果,请在跟踪数据中添加 ua 参数并将其设置为自定义值。