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

如何通过Google Analytics API按URL过滤查询指定页面用户数据

解决方案

你需要给报表请求添加维度过滤器,即可实现和GA前端页面搜索一致的过滤效果,仅返回匹配指定页面路径的数据,不需要在返回结果里再做二次筛选。

具体修改步骤

  1. 在创建ReportRequest对象前,添加维度过滤器配置代码
  2. 将过滤器绑定到报表请求中即可

完整修改后的代码

你只需要在原有代码的维度定义之后、报表请求定义之前,增加过滤器部分,完整示例如下:

// Create and configure a new client object
$client = new Google_Client();
$client->setApplicationName("Analytics");
$client->setAuthConfig(__ROOT__ . '/analytics/client_secrets.json');
$client->setScopes(['https://www.googleapis.com/auth/analytics.readonly']);

$analytics = new Google_Service_AnalyticsReporting($client);

// Create DateRange objects.
$july = new Google_Service_AnalyticsReporting_DateRange();
$july->setStartDate("2021-07-01");
$july->setEndDate("2021-07-31");

$august = new Google_Service_AnalyticsReporting_DateRange();
$august->setStartDate("2021-08-01");
$august->setEndDate("2021-08-31");

// Create the Metrics object.
$metric = new Google_Service_AnalyticsReporting_Metric();
$metric->setExpression("ga:users");
$metric->setAlias("users");

//Create the Dimensions object.
$dimension = new Google_Service_AnalyticsReporting_Dimension();
$dimension->setName("ga:pagePath");

// --------------- 新增过滤器代码开始 ---------------
// 创建页面路径过滤器
$pageFilter = new Google_Service_AnalyticsReporting_DimensionFilter();
$pageFilter->setDimensionName('ga:pagePath');
// 如果是精确匹配完整路径用EXACT,和前端搜索一致的包含匹配用PARTIAL
$pageFilter->setOperator('PARTIAL');
$pageFilter->setExpressions(['my-page.php']);
// 不区分大小写的话可以加下面这行
$pageFilter->setCaseSensitive(false);

// 组装过滤器子句
$filterClause = new Google_Service_AnalyticsReporting_DimensionFilterClause();
$filterClause->setFilters([$pageFilter]);
// --------------- 新增过滤器代码结束 ---------------

// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId("XXXX");
$request->setDateRanges(array($july, $august));
$request->setDimensions(array($dimension));
$request->setMetrics(array($metric));
// 把过滤器绑定到请求上
$request->setDimensionFilterClauses([$filterClause]);

$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests(array($request));

$reports = $analytics->reports->batchGet($body);

// 后续输出代码和原有一致即可
for ( $reportIndex = 0; $reportIndex < count( $reports ); $reportIndex++ ) {
    $report = $reports[ $reportIndex ];
    $header = $report->getColumnHeader();
    $dimensionHeaders = $header->getDimensions();
    $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
    $rows = $report->getData()->getRows();

    for ( $rowIndex = 0; $rowIndex < count($rows); $rowIndex++) {
        $row = $rows[ $rowIndex ];
        $dimensions = $row->getDimensions();
        $metrics = $row->getMetrics();
        for ($i = 0; $i < count($dimensionHeaders) && $i < count($dimensions); $i++) {
            print($dimensionHeaders[$i] . ": " . $dimensions[$i] . "<br>");
        }

        for ($j = 0; $j < count($metrics); $j++) {
            $values = $metrics[$j]->getValues();
            for ($k = 0; $k < count($values); $k++) {
                $entry = $metricHeaders[$k];
                print($entry->getName() . ": " . $values[$k] . "<br>");
            }
        }
    }
}

可选运算符说明

你可以根据实际需求更换过滤器的运算符:

  • PARTIAL:路径包含指定字符串即可,和GA前端搜索框的效果完全一致
  • EXACT:必须和指定路径完全匹配
  • REGEXP:支持正则表达式匹配,适合更复杂的路径筛选规则

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:09:03