首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >添加ga:pagePath维度,以便使用v4获取特定URL的页面视图

添加ga:pagePath维度,以便使用v4获取特定URL的页面视图
EN

Stack Overflow用户
提问于 2017-07-03 06:50:53
回答 2查看 7.7K关注 0票数 1

查询资源管理器(https://ga-dev-tools.appspot.com/query-explorer/)指定使用作为值添加筛选器ga:pagePath,以获取特定URL的页面视图。

对于新的Reporting,我尝试添加ga:pagePath作为维度,但它没有返回任何结果。以下是代码:

代码语言:javascript
运行
复制
  $dateRange = new Google_Service_AnalyticsReporting_DateRange();
  $dateRange->setStartDate("7daysAgo");
  $dateRange->setEndDate("today");

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

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

  // Create the segment dimension.
  $segmentDimensions = new Google_Service_AnalyticsReporting_Dimension();
  $segmentDimensions->setName("ga:segment");

  // Create Dimension Filter.
  $dimensionFilter = new Google_Service_AnalyticsReporting_SegmentDimensionFilter();
  $dimensionFilter->setDimensionName("ga:pagePath");
  $dimensionFilter->setOperator("EXACT");
  $dimensionFilter->setExpressions(array("/post/digital-footprints-the-trails-you-leave-on-the-web"));

  // Create Segment Filter Clause.
  $segmentFilterClause = new Google_Service_AnalyticsReporting_SegmentFilterClause();
  $segmentFilterClause->setDimensionFilter($dimensionFilter);

  // Create the Or Filters for Segment.
  $orFiltersForSegment = new Google_Service_AnalyticsReporting_OrFiltersForSegment();
  $orFiltersForSegment->setSegmentFilterClauses(array($segmentFilterClause));

  // Create the Simple Segment.
  $simpleSegment = new Google_Service_AnalyticsReporting_SimpleSegment();
  $simpleSegment->setOrFiltersForSegment(array($orFiltersForSegment));

  // Create the Segment Filters.
  $segmentFilter = new Google_Service_AnalyticsReporting_SegmentFilter();
  $segmentFilter->setSimpleSegment($simpleSegment);

  // Create the Segment Definition.
  $segmentDefinition = new Google_Service_AnalyticsReporting_SegmentDefinition();
  $segmentDefinition->setSegmentFilters(array($segmentFilter));

  // Create the Dynamic Segment.
  $dynamicSegment = new Google_Service_AnalyticsReporting_DynamicSegment();
  $dynamicSegment->setSessionSegment($segmentDefinition);
  $dynamicSegment->setName("Pageview for the URL");

  // Create the Segments object.
  $segment = new Google_Service_AnalyticsReporting_Segment();
  $segment->setDynamicSegment($dynamicSegment);


  // Create the ReportRequest object.
  $request = new Google_Service_AnalyticsReporting_ReportRequest();
  $request->setViewId($VIEW_ID);
  $request->setDateRanges($dateRange);
  $request->setDimensions(array($path, $segmentDimensions));
  $request->setSegments(array($segment));
  $request->setMetrics(array($sessions));

  $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
  $body->setReportRequests( array( $request) );
  return $analytics->reports->batchGet( $body );

任何帮助都将不胜感激。基本上,我试图创建一个Cron作业,它将使用在我的网站上获取各种文章的页面浏览量,并在数据库中更新相同的内容,这将被完成,或者一天两次。下面是我目前用来打印报告的代码:

代码语言:javascript
运行
复制
function printResults($reports) {
  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] . "\n");
      }

      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] . "\n");
        }
      }
    }
  }
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-12-19 16:11:27

我已经找到了解决这个问题的办法。但是,我没有选择面向对象的方法,而是选择一个数组来生成查询。我希望这能帮你解决问题。

//加载Google客户端库。

代码语言:javascript
运行
复制
require_once __DIR__ . '/vendor/autoload.php';
$VIEW_ID = "replace_with_your_id";
$start_date = "2017-01-01";
$end_date = "2017-12-31";

$analytics = initializeAnalytics();
$reports = getReports("/f/0w3ciqnw");
if ($reports) echo getViews($reports);


/**
 * Initializes an Analytics Reporting API V4 service object.
 *
 * @return An authorized Analytics Reporting API V4 service object.
 */
function initializeAnalytics()
{

    // Use the developers console and download your service account
    // credentials in JSON format. Place them in this directory or
    // change the key file location if necessary.
    $KEY_FILE_LOCATION = '../service-account-credentials.json';

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

    return $analytics;
}

function getReports($page_path)
{
    global $VIEW_ID, $start_date, $end_date, $analytics;

    $query = [
        "viewId" => $VIEW_ID,
        "dateRanges" => [
            "startDate" => $start_date,
            "endDate" => $end_date
        ],
        "metrics" => [
            "expression" => "ga:pageviews"
        ],
        "dimensions" => [
            "name" => "ga:pagepath"
        ],
        "dimensionFilterClauses" => [
            'filters' => [
                "dimension_name" => "ga:pagepath",
                "operator" => "ENDS_WITH", // valid operators can be found here: https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet#FilterLogicalOperator
                "expressions" => $page_path
            ]
        ]
    ];


    // build the request and response
    $body = new Google_Service_AnalyticsReporting_GetReportsRequest();
    $body->setReportRequests(array($query));
    // now batchGet the results https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet
    $report = $analytics->reports->batchGet($body);
    return $report;
}

function getViews($reports)
{
    $rows = $reports[0]->getData()->getRows();
    if ($rows){
        $metrics = $rows[0]->getMetrics()[0]->values[0];
        if ($metrics){
            return $metrics;
        }
    }
    return false;
}
票数 3
EN

Stack Overflow用户

发布于 2018-01-24 05:26:50

我尝试了这段代码,并且运行得很好,但只有一个过滤器。

它不适用于两个过滤器:

代码语言:javascript
运行
复制
"metrics" => [
  "expression" => "ga:pageviews"
],
"dimensions" => [
  "name" => "ga:pagepath",
  "name" => "ga:medium",
  "name" => "ga:week"
],
"dimensionFilterClauses" => [ 
  'filters' => [
    "dimension_name" => "ga:medium",
    "operator" => "EXACT",
    "expressions" => "organic"
  ],
  'filters' => [
    "dimension_name" => "ga:pagepath",
    "operator" => "EXACT",
    "expressions" => $page_path
  ]
]

有效的运算符可以找到这里

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44879374

复制
相关文章

相似问题

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