首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用URL过滤

使用URL过滤
EN

Stack Overflow用户
提问于 2021-08-17 16:03:56
回答 1查看 641关注 0票数 0

我们在Google中有几个视图,我们通过他们的API接口生成报告。这些视图现在在获取用户或会话的数量方面对我们来说是很好的。然而,在其中一个视图上,我们希望深入到特定的页面。

例如,我们想知道从July 2021August 2021访问July 2021的用户数量。

这是我目前的代码:

代码语言:javascript
复制
// 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");

// 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));

$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>");
            }
        }
    }
}

您会注意到,我使用的是ga:pagePath,但我不确定我是否正朝着正确的方向前进,因为这给了我在这两个月中访问的所有页面,我看不出只通过我想要看到的页面过滤它的方法。

如果有用的话,这就是我的代码给出的结果:

代码语言:javascript
复制
...
ga:pagePath: /some/path/other-page.php
users: 388
users: 208
ga:pagePath: /some/path/my-page.php        <------ I want this
users: 417
users: 376
ga:pagePath: /wrong/path/wrong-page.php
users: 128
users: 87
...

我想指出的是,我们可以通过以下方式实现类似于Google分析前端的东西

Behavior > Site Content > All Pages

然后搜索my-page.php。这就是我想通过API复制的内容。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-08-17 18:34:49

您必须创建一个维度过滤器。您可以在正式文档中找到一个示例:4.

就像这样:

代码语言:javascript
复制
$dimensionFilter = new Google_Service_AnalyticsReporting_DimensionFilter();
$dimensionFilter->setDimensionName("ga:pagePath");
$dimensionFilter->setOperator('REGEXP');
$dimensionFilter->setExpressions('my-page.php');
$dimensionFilter->setNot(TRUE);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68820648

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档