9

我正在使用 PHP 访问 Google 分析 API,它适用于我,但我想进一步过滤结果。现在我正在使用:

$OBJresult = $analytics -> data_ga -> get(
    'ga:' . $profilID,
    '2012-01-01',
    date( "Y-m-d" ),
    'ga:visits',
    array(
        'dimensions' => 'ga:pagePath',
        'metrics' => 'ga:pageviews',
        'sort' => '-ga:pageviews',
        'max-results' => '25'
    )
);

目前,这会返回一组 25 个按其点击量排序的页面。我很想将结果限制在服务器中的特定路径。所以例如只查询 domain.com/news 并且只查看最热门的新闻页面是什么。我可以使用 PHP 进行过滤,而是让查询尽可能具体。

谢谢您的帮助

4

3 回答 3

19

使用该filters选项。

$OBJresult = $analytics->data_ga->get(
    'ga:' . $profilID,
    '2012-01-01',
    date("Y-m-d"),
    'ga:visits',
    array(
        'filters' => 'ga:pagePath==/news',
        'dimensions' => 'ga:pagePath',
        'metrics' => 'ga:pageviews',
        'sort' => '-ga:pageviews',
        'max-results' => '25'
    )
);

有关您可以过滤的页面跟踪维度列表,请参见此处

于 2013-05-24T05:33:23.523 回答
11

您需要使用过滤器字符串说“如果路径包含/新闻”,可以按如下方式完成:

$OBJresult=$analytics->data_ga->get(
    'ga:'.$profilID,
    '2012-01-01',
    date("Y-m-d"),
    'ga:visits',
    array(
        'filters' => 'ga:pagePath=@/news',
        'dimensions' => 'ga:pagePath',
        'metrics' => 'ga:pageviews',
        'sort' => '-ga:pageviews',
        'max-results' => '25'));

Barmar 提供的答案只会找到 /news 页面的完全匹配项。

于 2013-05-24T05:45:20.143 回答
0

报告可能有用的 V4 示例。感谢上帝提供这些查询,它们的对象和糟糕的文档可能会导致严重的屁股癌。

function segmentRequest(&$analyticsreporting) {

$query = [
        "viewId" => "XXXXXXX",
        "dateRanges" => [
            "startDate" => "2018-02-01",
            "endDate" => "2018-02-15"
        ],
        "metrics" => [
            "expression" => "ga:pageviews"
        ],
        "dimensions" => [
            "name" => "ga:pagepath"
        ],
        "dimensionFilterClauses" => [
            'filters' => [
                "dimension_name" => "ga:pagepath",
                "operator" => "EXACT",
                "expressions" => "/en/some_cool_page.php"
            ]
        ]
    ];

  // Call the batchGet method.
  $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
  $body->setReportRequests( array( $query) );
  $response = $analyticsreporting->reports->batchGet( $body );

  printResults($response->getReports());
}
于 2018-03-22T03:30:56.710 回答