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

Google Analytics Data API迁移Apps Script报gapi is not defined

Apps Script 环境适配 GA Data API 方案

不要尝试在Apps Script中加载浏览器端gapi依赖:gapi是专为浏览器前端环境设计的客户端库,无法在Apps Script的V8服务端运行时正常加载执行。Apps Script内置了Google服务调用能力与自动授权机制,无需手动写登录、加载SDK逻辑,直接按以下步骤适配即可:

前置配置

  • 打开Apps Script编辑器,在左侧边栏找到「服务」板块,点击「添加服务」按钮
  • 在弹出的服务列表中选中Google Analytics Data API,点击确认添加,系统会自动配置好数据读取所需的授权范围,无需手动填写API Key、Client ID
  • 首次运行脚本时,会弹出授权确认窗口,使用拥有目标GA4媒体资源读取权限的谷歌账号同意授权即可

适配后可直接运行的代码

以下代码完全匹配原脚本的查询参数,运行后会自动拉取GA数据并写入当前绑定的电子表格:

// 替换为你自己的GA4属性ID
const GA_PROPERTY_ID = '295880876';

function syncGaDataToSheet() {
  // 构造查询参数,和原脚本的查询规则完全一致
  const reportRequest = {
    metrics: [
      { name: "sessions" },
      { name: "conversions" },
      { name: "totalRevenue" }
    ],
    dimensions: [
      { name: "week" },
      { name: "year" }
    ],
    dateRanges: [
      { startDate: "2021-01-01", endDate: "today" }
    ]
  };

  try {
    // 直接调用内置GA服务,无需加载额外依赖
    const apiResponse = AnalyticsData.Properties.runReport(reportRequest, `properties/${GA_PROPERTY_ID}`);
    
    // 整理返回数据为表格支持的二维数组格式
    const sheetData = [];
    // 写入表头
    const tableHeaders = [
      ...apiResponse.dimensionHeaders.map(item => item.name),
      ...apiResponse.metricHeaders.map(item => item.name)
    ];
    sheetData.push(tableHeaders);

    // 逐行写入明细数据
    apiResponse.rows.forEach(row => {
      const lineData = [
        ...row.dimensionValues.map(val => val.value),
        ...row.metricValues.map(val => val.value)
      ];
      sheetData.push(lineData);
    });

    // 将数据写入电子表格,默认写入第一个工作表
    const targetSheet = SpreadsheetApp.getActiveSpreadsheet().getSheets()[0];
    targetSheet.clearContents();
    targetSheet.getRange(1, 1, sheetData.length, sheetData[0].length).setValues(sheetData);
    console.log(`数据同步完成,共导入${sheetData.length - 1}行有效数据`);
  } catch (error) {
    console.error(`执行失败:${error.message}`);
  }
}

可选配置说明

  • 如果需要定时自动同步数据,可在Apps Script编辑器左侧「触发器」板块,给syncGaDataToSheet函数添加时间驱动触发器,设置按天/周等频率自动运行即可
  • 如果不想使用内置高级服务,也可以通过UrlFetchApp直接构造POST请求调用GA接口,鉴权令牌通过ScriptApp.getOAuthToken()自动获取,不需要加载任何外部脚本
  • 运行前请确认GA_PROPERTY_ID和你实际要查询的GA4资源ID一致,避免出现权限不足的报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 13:18:16