You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vue3项目中如何获取GA4分析数据并展示至后台页面?

在Vue3项目中获取GA4分析数据的实现方案

核心前提

要获取已关联网站的GA4数据集,必须通过**Google Analytics Data API(GA4)**实现——前端无法直接读取GA4的原始用户数据,所有请求都需要经过身份验证,因此必须结合后端代理或使用官方提供的嵌入方案。

一、原生JavaScript实现(推荐用于公开后台)

由于GA4 API的密钥不能暴露在前端,必须通过后端转发请求,以下是完整的前后端示例:

1. 准备工作

  • 在Google Cloud控制台创建项目,启用「Analytics Data API」
  • 创建服务账号,下载JSON格式的密钥文件
  • 在GA4后台给该服务账号添加「查看者」权限
  • 记录GA4的Property ID(格式:2XXXXXXXXX)

2. Vue3前端代码(组件示例)

<template>
  <div class="ga-dashboard">
    <h3>网站访问统计</h3>
    <div v-if="loading">数据加载中...</div>
    <div v-else class="stats">
      <p>近7天活跃用户数: {{ activeUsers }}</p>
      <p>今日访问量: {{ todaySessions }}</p>
    </div>
  </div>
</template>

<script setup>
import { ref, onMounted } from 'vue'

const loading = ref(true)
const activeUsers = ref('0')
const todaySessions = ref('0')

onMounted(async () => {
  try {
    // 调用自建后端接口,由后端处理GA4 API请求
    const res = await fetch('/api/ga4/get-site-stats', {
      method: 'POST',
      headers: { 'Content-Type': 'application/json' },
      body: JSON.stringify({ propertyId: '2XXXXXXXXX' })
    })
    const data = await res.json()
    activeUsers.value = data.activeUsers
    todaySessions.value = data.todaySessions
  } catch (err) {
    console.error('GA4数据获取失败:', err)
  } finally {
    loading.value = false
  }
})
</script>

3. 后端代理示例(Node.js)

const { google } = require('googleapis')
const express = require('express')
const app = express()
app.use(express.json())

// 加载服务账号密钥
const auth = new google.auth.GoogleAuth({
  keyFile: './ga4-service-account.json',
  scopes: ['https://www.googleapis.com/auth/analytics.readonly']
})

// 自定义接口:获取网站核心统计数据
app.post('/api/ga4/get-site-stats', async (req, res) => {
  const { propertyId } = req.body
  const analyticsData = google.analyticsdata({ version: 'v1beta', auth })

  try {
    // 同时请求近7天活跃用户和今日访问量
    const [activeUsersRes, todaySessionsRes] = await Promise.all([
      analyticsData.properties.runReport({
        property: `properties/${propertyId}`,
        requestBody: {
          dateRanges: [{ startDate: '7daysAgo', endDate: 'today' }],
          metrics: [{ name: 'activeUsers' }]
        }
      }),
      analyticsData.properties.runReport({
        property: `properties/${propertyId}`,
        requestBody: {
          dateRanges: [{ startDate: 'today', endDate: 'today' }],
          metrics: [{ name: 'sessions' }]
        }
      })
    ])

    res.json({
      activeUsers: activeUsersRes.data.rows[0].metricValues[0].value,
      todaySessions: todaySessionsRes.data.rows[0].metricValues[0].value
    })
  } catch (err) {
    res.status(500).json({ error: err.message })
  }
})

app.listen(3001, () => console.log('GA4代理服务运行在3001端口'))

二、官方嵌入方案(适合内部后台)

如果是仅供内部人员使用的后台,可以直接使用GA4的Embed API,无需自建后端,但需要用户登录Google账号授权:

<template>
  <div id="ga-embed-container"></div>
</template>

<script setup>
import { onMounted } from 'vue'

onMounted(() => {
  // 加载Google Charts脚本(Embed API依赖)
  const script = document.createElement('script')
  script.src = 'https://www.gstatic.com/charts/loader.js'
  script.onload = initGaDashboard
  document.body.appendChild(script)

  function initGaDashboard() {
    window.google.charts.load('current', { packages: ['analytics'] })
    window.google.charts.setOnLoadCallback(renderDashboard)
  }

  function renderDashboard() {
    const analytics = window.google.analytics
    // 授权弹窗(用户需登录拥有GA4权限的Google账号)
    analytics.auth.authorize({
      container: 'ga-embed-container',
      clientid: '你的OAuth客户端ID', // 从Google Cloud控制台获取
      scope: 'https://www.googleapis.com/auth/analytics.readonly'
    })

    // 渲染视图选择器(可切换不同GA4属性)
    const viewSelector = new analytics.ViewSelector2({
      container: 'ga-embed-container'
    })
    viewSelector.execute()

    // 渲染访问趋势折线图
    const dataChart = new analytics.DataChart({
      container: 'ga-embed-container',
      query: {
        metrics: 'ga:sessions',
        dimensions: 'ga:date',
        'start-date': '30daysAgo',
        'end-date': 'today'
      },
      chart: {
        type: 'LINE',
        options: { width: '100%', height: 400 }
      }
    })
    dataChart.execute()
  }
})
</script>

关键注意事项

  • 服务账号密钥绝对不能放在前端代码中,否则会导致密钥泄露,引发安全风险
  • GA4 Data API有调用配额限制,需合理控制请求频率
  • 公开后台必须使用后端代理方案,内部后台可选择Embed API简化开发

内容的提问来源于stack exchange,提问作者Larry

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 18:02:32