简体   繁体   English

Google Analytics(分析)-获取URL的页面视图信息

[英]Google Analytics - Getting page view information for a URL

(Using Reporting API V4) Whenever I am trying to get the page view information via google analytics, it doesn't seem to be filtering correctly. (使用Reporting API V4)每当我尝试通过Google Analytics(分析)获取网页浏览信息时,它似乎都无法正确过滤。 For example with the setOperator("BEGINS_WITH"); 例如,使用setOperator("BEGINS_WITH"); and then setExpressions("/report"); 然后setExpressions("/report"); lines, what I would expect is to only retreive pages that start with mywebsitename.com/report however it gives me all sorts of stuff such as pages that start with /tag and /sponsor in addition to a bunch(but I don't think all, not actually sure about that) of the pages starting with /report. 行,我期望的是只浏览以mywebsitename.com/report开头的页面,但是它给了我各种各样的东西,例如除了一堆之外以/ tag和/ sponsor开头的页面(但是我不认为全部,但实际上不确定)/ report开头的页面。

This continues to be an issue when dealing with more specific URLs and also when using different operators. 在处理更多特定的URL以及使用不同的运算符时,这仍然是一个问题。 It always returns what I'm looking for but also a bunch of other random junk that seems unrelated. 它总是返回我要寻找的内容,但也返回一堆其他似乎无关的随机垃圾。 I also tried using just regex, but that still gave similar stuff. 我也尝试只使用正则表达式,但是仍然提供了类似的东西。

I feel like my problem likely lies in not understanding exactly what all of the various objects do (in php specifically), but I have been unable to find an answer for some of that. 我觉得我的问题可能在于无法准确了解所有各种对象的功能(特别是在php中),但是我无法找到某些答案。

The closest answer I was able to find on SO here is this however I'm not sure what I'm doing differently than this guy. 我在这里能找到的最接近的答案是这个,但是我不确定我在做什么不同于这个家伙。 I mean one thing is that I'm not using the JSON string natively, however in the documentation from google they use this weird function syntax Im using. 我的意思是一件事是,我不是本机使用JSON字符串,但是在Google文档中,他们使用了这种奇怪的函数语法Im正在使用。 Other than that it should be pretty much the same I think. 除此之外,我认为应该大致相同。

This is mostly a combination of example code from here and here . 这主要是此处此处的示例代码的组合。

<?php

// Load the Google API PHP Client Library.
require_once __DIR__ . '/vendor/autoload.php';


$analytics = initializeAnalytics();
//print_r($analytics);
$response = getReport($analytics);
//print_r($response);
printResults($response);


/**
 * 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 = __DIR__ . '/service-account-credentials.json';

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

  return $analytics;
}


/**
 * Queries the Analytics Reporting API V4.
 *
 * @param service An authorized Analytics Reporting API V4 service object.
 * @return The Analytics Reporting API V4 response.
 */
function getReport($analytics) {

  // Replace with your view ID, for example XXXX.
  $VIEW_ID = "HIDDEN";

  // Create the DateRange object.
  $dateRange = new Google_Service_AnalyticsReporting_DateRange();
  $dateRange->setStartDate("9daysAgo");
  $dateRange->setEndDate("today");

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

  //Create the dimensions dimension.
  $dimensions = new Google_Service_AnalyticsReporting_Dimension();
  $dimensions->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("BEGINS_WITH");
  $dimensionFilter->setExpressions("/report");

  // 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("Sessions with path");

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

  $request = new Google_Service_AnalyticsReporting_ReportRequest();
  $request->setViewId($VIEW_ID);
  $request->setDateRanges(array($dateRange));
  $request->setDimensions(array($dimensions, $segmentDimensions));
  $request->setSegments(array($segment));
  $request->setMetrics(array($metricss));

  // Create the GetReportsRequest object.
  $getReport = new Google_Service_AnalyticsReporting_GetReportsRequest();
  $getReport->setReportRequests(array($request));

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

  return $response;
}


/**
 * Parses and prints the Analytics Reporting API V4 response.
 *
 * @param An Analytics Reporting API V4 response.
 */
function printResults($reports) {
 // print_r("reports/n");
  //print_r($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");
        }
      }
    }
  }
}

This should be just returning the view count for the specific page path. 这应该只是返回特定页面路径的视图计数。

You can avoid the detailed code from the examples by just using the Google_Service_AnalyticsReporting_DimensionFilter and the Google_Service_AnalyticsReporting_DimensionFilterClause 您可以只使用Google_Service_AnalyticsReporting_DimensionFilterGoogle_Service_AnalyticsReporting_DimensionFilterClause来避免示例中的详细代码

So an example is this 所以一个例子是

...

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

// Create the DimensionFilter.
$dimensionFilter = new Google_Service_AnalyticsReporting_DimensionFilter();
$dimensionFilter->setDimensionName('ga:pagePath');
$dimensionFilter->setOperator('BEGINS_WITH');
$dimensionFilter->setExpressions(array('/report'));

// Create the DimensionFilterClauses
$dimensionFilterClause = new Google_Service_AnalyticsReporting_DimensionFilterClause();
$dimensionFilterClause->setFilters(array($dimensionFilter));  

...

$request->setDimensions(array($dimension));
$request->setDimensionFilterClauses(array($dimensionFilterClause));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM