1

Bonjour,Comment obtenir les 10 000 prochaines données de google analytics api en utilisant php?

Existe-t-il un moyen d'obtenir les 10 000 prochaines données de l'API google analytics? Je voudrais obtenir le prochain ensemble de données après avoir obtenu le premier 10 000. Y a-t-il un moyen d'accomplir cela? J'utilise les bibliothèques client google analytics api php.

Voici mon code:

<?php 
$analytics = initializeAnalytics();  
$response = getReport($analytics); 
printResults($response); 

function initializeAnalytics() 
{ 
    $KEY_FILE_LOCATION = __DIR__ . 'MyFileDirectory'; 
    // 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; 
} 

function getReport($analytics) { 
    // Replace with your view ID, for example XXXX. 
    $VIEW_ID = "MyViewId"; 

    // Create the DateRange object. 
    $dateRange = new Google_Service_AnalyticsReporting_DateRange(); 
    $dateRange->setStartDate("2017-04-01"); 
    $dateRange->setEndDate("2017-06-19"); 

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

    //Create the Dimensions object. 
    $clientId = new Google_Service_AnalyticsReporting_Dimension(); 
    $clientId->setName("ga:dimension4"); 
    $sessionId = new Google_Service_AnalyticsReporting_Dimension(); 
    $sessionId->setName("ga:dimension5"); 
    $eventLabel = new Google_Service_AnalyticsReporting_Dimension(); 
    $eventLabel->setName("ga:eventLabel"); 
    $timestamp = new Google_Service_AnalyticsReporting_Dimension(); 
    $timestamp->setName("ga:dimension3"); 

    // Create the ReportRequest object. 
    $request = new Google_Service_AnalyticsReporting_ReportRequest(); 
    $request->setViewId($VIEW_ID); 
    //set number of rows 
    $request->setPageSize(10000); 
    $request->setDateRanges($dateRange); 
    $request->setMetrics(array($totalEvents)); 
    $request->setDimensions(array($clientId,$sessionId,$eventLabel, 
    $timestamp)); 
    $body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 
    $body->setReportRequests(array($request)); 
    return $analytics->reports->batchGet($body); 
} 
} 
?> 
+0

Avez-vous vérifié https://developers.google.com/api-client-library/php/guide/pagination? –

+0

@JordiNebot Merci pour cette suggestion. Je vais essayer de mettre cela sur mon code. J'espère que c'est la réponse. – Ben

+0

@JordiNebot Je l'ai essayé et l'erreur est "Appel à une fonction membre getNextPageToken() sur null" – Ben

Répondre

1

Cela va obtenir les 10 premières pages de données. Je l'ai limité à 10 pour l'empêcher de manger mon quota. Si vous enlevez cela, vous continuerez à vous débarrasser de toutes les lignes et à ronger votre quota.

REMARQUE: Cela ne fonctionnera que si vous avez un seul rapport. Si vous avez plus d'un rapport alors vous allez devoir faire quelques trucs pour appliquer le bon pageToken à chaque rapport et enlever les rapports qui sont complets. Pour l'instant, il n'y a pas d'ID de rapport ou de façon de faire correspondre ce que vous avez envoyé au rapport renvoyé autre que sa place dans le tableau de rapports.

$service = new Google_Service_AnalyticsReporting($client); 

// Create the DateRange object. 
$dateRange = new Google_Service_AnalyticsReporting_DateRange(); 
$dateRange->setStartDate("2016-01-01"); 
$dateRange->setEndDate("2017-06-30"); 

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

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

// Create the ReportRequest object. 
$request = new Google_Service_AnalyticsReporting_ReportRequest(); 
$request->setViewId("81692014"); 
$request->setPageSize("10000"); 
$request->setDateRanges($dateRange); 
$request->setDimensions(array($date,$pagePath)); 
$request->setMetrics(array($sessions)); 
$request->setMetrics(array($sessions)); 

$body = new Google_Service_AnalyticsReporting_GetReportsRequest(); 
$body->setReportRequests(array($request)); 
$data = $service->reports->batchGet($body); 


// Remove count if you really want everything. 
$cnt = 0; 
while ($data->reports[0]->nextPageToken > 0 && $cnt < 10) { 
    // There are more rows for this report. 
    $body->reportRequests[0]->setPageToken($data->reports[0]->nextPageToken); 
    $data = $service->reports->batchGet($body); 
    $cnt++; 
    } 

j'ai mis en place de tutoriel sur ce Google Analytics V4 pagination et le code complet i utilisé figure sur GitHub note ce code a été arraché de mon exemple de projet.

+1

@DalmTo, merci pour le tutoriel. C'était vraiment une très grande aide. Ça fonctionne maintenant. J'ai eu les bonnes données et j'ai inséré ces données dans ma base de données. – Ben

+0

S'il vous plaît n'oubliez pas d'accepter la réponse. Vous obtiendrez également des points lorsque vous accepterez d'empiler le trop-plein – DaImTo