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

如何使用Google Analytics 4 Data API获取自然搜索数据

问题根因

你的代码无法运行是两个低级错误导致的:

  • GA4 Data API的runReport接口强制要求每次请求必须携带至少1个指标(metric),你第二段代码只传了维度,完全没配指标参数,过不了接口校验,会直接返回请求错误
  • 维度名写错了:GA4里默认渠道分组的会话维度官方名称是sessionDefaultChannelGrouping,你写的defaultChannelGrouping是旧版Universal Analytics的字段名,在GA4接口里不存在,会报维度无效错误
可直接运行的实现代码

你只需要把正确的维度名配上你之前已经跑通的指标列表,拿到返回结果后过滤出渠道值为Organic Search的行,就是你要的自然搜索数据:

$response = $this->data_client->runReport([
  'property' => $propertyId,
  'dateRanges' => [new DateRange(['start_date' => '7daysAgo', 'end_date' => '1daysAgo'])],
  'metrics' => [
    new Metric(['name' => 'totalUsers']),
    new Metric(['name' => 'newUsers']),
    new Metric(['name' => 'sessions']),
    new Metric(['name' => 'screenPageViews']),
    new Metric(['name' => 'engagedSessions']),
    new Metric(['name' => 'activeUsers']),
  ],
  'dimensions' => [
    new Dimension(['name' => 'sessionDefaultChannelGrouping']),
  ]
]);

$organicStats = [];
foreach ($response->getRows() as $row) {
  $channel = $row->getDimensionValues()[0]->getValue();
  if ($channel === 'Organic Search') {
    $metricList = ['totalUsers','newUsers','sessions','screenPageViews','engagedSessions','activeUsers'];
    foreach ($row->getMetricValues() as $idx => $val) {
      $organicStats[$metricList[$idx]] = $val->getValue();
    }
    break;
  }
}

var_dump($organicStats);
补充说明
  • 如果你要统计用户维度的首次归因渠道,可以把维度替换成userDefaultChannelGrouping,日常看流量渠道效果用sessionDefaultChannelGrouping就可以,和GA4网页端后台默认报表的统计口径完全一致
  • 不用在请求里加维度过滤参数,直接遍历结果匹配就行,不会额外消耗API配额
  • 如果遍历完所有行都没找到Organic Search的条目,说明你选的7天时间范围内站点没有自然搜索流量,不是代码问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 22:03:31