0

Je suis en train d'ajouter un filtre segment lors du retour des données de Google Analytics de base de rapports API et ont le code suivant:Comment définir un filtre segment sur l'API Google Analytics rapports v4

<?php 

function getReport($analytics) 
{ 
    $VIEW_ID = "XXX"; 

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

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

    $goalCompletionAll = new Google_Service_AnalyticsReporting_Metric(); 
    $goalCompletionAll->setExpression("ga:goalCompletionsAll"); 
    $goalCompletionAll->setAlias("goalCompletionsAll"); 

    // Create first dimension object 
    $dimensionChannel = new Google_Service_AnalyticsReporting_Dimension(); 
    $dimensionChannel->setName('ga:channelGrouping'); 

    // Create second dimension object 
    $dimensionSource = new Google_Service_AnalyticsReporting_Dimension(); 
    $dimensionSource->setName('ga:source'); 

    // Create Segment object 
    $segments = new Google_Service_AnalyticsReporting_Segment(); 
    $segments->setSegmentId('gaid::-4'); 

    // Create the ordering object 
    $ordering = new Google_Service_AnalyticsReporting_OrderBy(); 
    $ordering->setFieldName("ga:sessions"); 
    $ordering->setOrderType("VALUE"); 
    $ordering->setSortOrder("DESCENDING"); 

    // Create the Report Request object 
    $request = new Google_Service_AnalyticsReporting_ReportRequest(); 
    $request->setViewId($VIEW_ID); 
    $request->setDateRanges($dateRange); 

    // Set the metric 
    $request->setMetrics([ 
      $sessions, 
      $goalCompletionAll, 
    ]); 

    // Set the dimension 
    $request->setDimensions([ 
     $dimensionChannel, 
     $dimensionSource 
    ]); 


    // Set the segments 
    $request->setSegments($segments); 

    // Set ordering 
    $request->setOrderBys($ordering); 

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

    return $analytics->reports->batchGet($body); 
} 

Mais quand je lance ce code, je reçois l'erreur suivante:

Requests with segments must have ga:segment dimension. 

J'ai suivi l'exemple que j'ai trouvé this answer en Java (le segment partie Id). J'ai la configuration de l'ID de segment, que dois-je faire pour envoyer la demande de dimension ga: segement?

Répondre

1

Vous devez créer une dimension de segment:

 $dimensionSegment= new Google_Service_AnalyticsReporting_Dimension(); 
     $dimensionSegment->setName("ga:segment"); 

et l'ajouter à votre demande:

$request->setDimensions([ 
    $dimensionChannel, 
    $dimensionSource, 
    $dimensionSegment 
]);