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

如何用PHP的Google Analytics Data API (GA4)获取指定参数的事件

如何修改PHP版GA4 Data API代码获取指定事件

背景说明

已通过如下代码向GA4发送自定义事件:

gtag('event', 'asc_cta_interaction', {
    'page_type': 'widget',
    'element_text': 'widget_open_close',
    'event_action_result': 'close',
    'link_url' : '',
    'item_number': '',
    'item_condition' : '',
});

需求:获取所有eventName为asc_cta_interaction且element_text参数等于widget_open_close的事件数据。

修改后的完整代码

$property_id = 'test';
    
$client = new BetaAnalyticsDataClient([
   'credentials' => 'test' 
]);

// 构建复合过滤条件:同时满足eventName和element_text的要求
$filterExpression = new FilterExpression([
    'and_group' => new FilterExpressionList([
        'expressions' => [
            // 过滤eventName为asc_cta_interaction
            new FilterExpression([
                'filter' => new Filter([
                    'field_name'    => 'eventName',
                    'string_filter' => new StringFilter([
                        'value' => 'asc_cta_interaction',
                    ]),
                ]),
            ]),
            // 过滤element_text为widget_open_close
            new FilterExpression([
                'filter' => new Filter([
                    'field_name'    => 'eventElementText', // GA4中自定义参数的维度名格式为event[参数名],对应element_text即eventElementText
                    'string_filter' => new StringFilter([
                        'value' => 'widget_open_close',
                    ]),
                ]),
            ]),
        ],
    ]),
]);

// 发起API请求
$response = $client->runReport([
    'property' => 'properties/' . $property_id,
    'dateRanges' => [
        new DateRange([
            'start_date' => '2020-03-31',
            'end_date' => 'today',
        ]),
    ],
    'dimensions' => [
        new Dimension(['name' => 'eventName']),
        new Dimension(['name' => 'eventElementText']), // 加入element_text对应的维度,确保过滤和结果展示生效
        new Dimension(['name' => 'streamId']),
    ],
    'metrics' => [
        new Metric(['name' => 'eventCount']),
    ],
    'dimensionFilter' => $filterExpression,
]);

// 遍历处理返回结果
foreach ($response->getRows() as $row) {
    $eventName = $row->getDimensionValues()[0]->getValue();
    $elementText = $row->getDimensionValues()[1]->getValue();
    $streamId = $row->getDimensionValues()[2]->getValue();
    $eventCount = $row->getMetricValues()[0]->getValue();

    echo "<pre>";
    var_dump('事件名:'.$eventName, '元素文本:'.$elementText, '数据流ID:'.$streamId, '事件数量:'.$eventCount);
    echo "</pre>";
}

关键修改点

  1. 修正eventName过滤值:原代码错误将eventName的过滤值设为widget_open_close,改为目标事件名asc_cta_interaction。
  2. 添加复合过滤规则:用and_group组合两个过滤条件,确保同时匹配事件名和自定义参数值。
  3. 补充对应维度:在维度列表中加入eventElementText(对应自定义参数element_text),需提前在GA4后台将该参数配置为自定义维度,否则无法查询和过滤。
  4. 调整结果遍历逻辑:修正维度值的索引对应关系,保证获取到正确的字段内容。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 22:03:32