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

嵌入Google Analytics图表报错:window.google.load is not a function(服务器端授权)

解决 "Analytics embed window.google.load is not a function" 错误

这个问题我帮不少开发者排查过,核心原因是Google已经弃用了旧版的google.load加载器,你参考的示例可能还依赖这套过时的逻辑,导致浏览器找不到该函数。下面是具体的修复方案:

1. 替换过时的API加载方式

直接移除原来依赖google.load的脚本加载逻辑,改用GA Embed API官方推荐的现代异步加载方式。

2. 修正前端初始化代码

以下是适配当前GA Embed API的完整前端代码示例,你可以替换掉原来的<script>部分:

<div class="bloc_card analytics_graphs" data="<?php echo $token ?>">
  <div id="chart-1-container"></div>
  <div id="chart-2-container"></div>
</div>

<script>
// 异步加载GA Embed API核心脚本
(function(w, d, s, url){
  var js, fjs = d.getElementsByTagName(s)[0];
  if (w.gapi) return;
  js = d.createElement(s); js.src = url;
  fjs.parentNode.insertBefore(js, fjs);
}(window, document, 'script', 'https://apis.google.com/js/platform.js'));

// 等待API加载完成后初始化图表
window.gapi.analytics.ready(function() {
  // 从DOM中获取服务器端生成的授权token
  const accessToken = document.querySelector('.analytics_graphs').dataset;
  
  // 创建授权客户端
  const auth = new window.gapi.analytics.auth.Client({
    access_token: accessToken
  });

  // 完成授权后初始化图表
  auth.authorize().then(function() {
    // 初始化图表1(示例:30天会话数趋势图)
    const chart1 = new window.gapi.analytics.googleCharts.DataChart({
      query: {
        ids: 'ga:YOUR_VIEW_ID', // 替换为你的GA视图ID
        metrics: 'ga:sessions',
        dimensions: 'ga:date',
        'start-date': '30daysAgo',
        'end-date': 'today'
      },
      chart: {
        container: 'chart-1-container',
        type: 'LINE',
        options: {
          width: '100%',
          curveType: 'function'
        }
      }
    });
    chart1.execute();

    // 初始化图表2(示例:Top 10页面浏览量)
    const chart2 = new window.gapi.analytics.googleCharts.DataChart({
      query: {
        ids: 'ga:YOUR_VIEW_ID', // 替换为你的GA视图ID
        metrics: 'ga:pageviews',
        dimensions: 'ga:pagePath',
        'start-date': '30daysAgo',
        'end-date': 'today',
        'max-results': 10,
        sort: '-ga:pageviews'
      },
      chart: {
        container: 'chart-2-container',
        type: 'BAR',
        options: {
          width: '100%',
          legend: { position: 'none' }
        }
      }
    });
    chart2.execute();
  });
});
</script>

3. 关键注意事项

  • 务必将代码中的ga:YOUR_VIEW_ID替换为你实际的Google Analytics视图ID(可在GA后台的「视图设置」中找到)。
  • 服务器端生成的$token必须是有效的OAuth 2.0访问令牌,且需包含https://www.googleapis.com/auth/analytics.readonly权限。
  • 不要同时加载旧的google.load相关脚本,避免产生冲突。

为什么原来的代码会报错?

旧版GA Embed API示例依赖google.load('analytics', '1')加载API,但Google已经逐步淘汰了Google Loader服务,相关的google.load函数不再可用,因此会抛出"not a function"的错误。改用直接加载platform.js并通过gapi.analytics.ready回调初始化的方式,是当前官方推荐的稳定方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 07:44:23