如何用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>"; }
关键修改点
- 修正eventName过滤值:原代码错误将eventName的过滤值设为
widget_open_close,改为目标事件名asc_cta_interaction。 - 添加复合过滤规则:用
and_group组合两个过滤条件,确保同时匹配事件名和自定义参数值。 - 补充对应维度:在维度列表中加入
eventElementText(对应自定义参数element_text),需提前在GA4后台将该参数配置为自定义维度,否则无法查询和过滤。 - 调整结果遍历逻辑:修正维度值的索引对应关系,保证获取到正确的字段内容。
内容的提问来源于stack exchange,提问作者Adrian Dragomir
相关产品推荐
相关产品推荐

