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

Google Analytics Data API脚本在Google Apps Script中执行失败求助

解决GA4数据导出到Google Sheets时的Failed with error: undefined错误

核心问题分析及修复步骤

1. 错误捕获逻辑错误导致提示模糊

原代码的catch块中使用e.error打印错误,但Apps Script的异常对象并没有error属性,这才导致输出undefined。修改成打印e.message或直接打印e,才能看到真实错误信息:

catch (e) {
  console.log('Failed with error: %s', e.message || e);
}

2. DateRanges参数格式错误

GA4的RunReportRequest要求dateRanges是数组类型,原代码直接赋值单个dateRange对象,这会导致API调用失败。修正如下:

const request = AnalyticsData.newRunReportRequest();
request.dimensions = [dimension];
request.metrics = [metric];
request.dateRanges = [dateRange]; // 改为数组格式

3. 未启用Analytics Data高级服务

在Apps Script编辑器中必须手动启用Analytics Data API:

  • 点击编辑器菜单栏的「扩展」→「Apps Script」
  • 在左侧菜单选择「服务」→「添加服务」
  • 找到「Analytics Data」并启用(注意不是旧版的「Analytics」服务)

修正后的完整代码

function runReport() {
  const propertyId = 'YOUR-GA4-PROPERTY-ID';

  try {
    const metric = AnalyticsData.newMetric();
    metric.name = 'activeUsers';

    const dimension = AnalyticsData.newDimension();
    dimension.name = 'city';

    const dateRange = AnalyticsData.newDateRange();
    dateRange.startDate = '2020-03-31';
    dateRange.endDate = 'today';

    const request = AnalyticsData.newRunReportRequest();
    request.dimensions = [dimension];
    request.metrics = [metric];
    request.dateRanges = [dateRange]; // 修正为数组

    const report = AnalyticsData.Properties.runReport(request, 'properties/' + propertyId);
    if (!report.rows) {
      console.log('No rows returned.');
      return;
    }

    const spreadsheet = SpreadsheetApp.create('Google Analytics Report');
    const sheet = spreadsheet.getActiveSheet();

    // 追加表头
    const dimensionHeaders = report.dimensionHeaders.map(dimensionHeader => dimensionHeader.name);
    const metricHeaders = report.metricHeaders.map(metricHeader => metricHeader.name);
    const headers = [...dimensionHeaders, ...metricHeaders];
    sheet.appendRow(headers);

    // 追加数据行
    const rows = report.rows.map(row => {
      const dimensionValues = row.dimensionValues.map(dv => dv.value);
      const metricValues = row.metricValues.map(mv => mv.value);
      return [...dimensionValues, ...metricValues];
    });
    sheet.getRange(2, 1, report.rows.length, headers.length).setValues(rows);

    console.log('Report spreadsheet created: %s', spreadsheet.getUrl());
  } catch (e) {
    console.log('Failed with error: %s', e.message || e); // 修正错误捕获逻辑
  }
}

额外检查项

  • 确认propertyId是正确的GA4属性ID(格式为纯数字,不是UA-开头的旧格式)
  • 确保你的Google账号对该GA4属性拥有编辑者及以上权限
  • 测试时可以缩小日期范围(比如startDate: '7daysAgo'),避免因数据量过大或日期无效导致的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 13:07:41