2 votes

Comment définir un alias de dimension sur l'API de reporting Google Analytics Core V4 en utilisant PHP

Je travaille à l'intégration de l'API v4 de Google Analytics Reporting à mon site Web en utilisant le système de gestion des rapports de Google Analytics. Google Analytics Core Reporting API V4

J'ai configuré l'API de reporting pour qu'elle renvoie un maximum de 10 résultats. Mon problème est que je n'arrive pas à trouver comment obtenir les 10 résultats suivants ou précédents car l'api renvoie toujours les 10 premiers.

Existe-t-il un moyen d'obtenir les 10 résultats suivants et / ou précédents avec Google Analytics Core Reporting API v4 ?

mon code PHP ci-dessous :

// Create the ReportRequest object.   

$request = new Google_Service_AnalyticsReporting_ReportRequest();  
$request->setViewId($VIEW_ID);   
$request->setDateRanges($dateRange); 
$request->setPageSize(10);  
//===========================================================      
//  HOW DO I SET TO SHOW DIFFERENT PAGE THAN A FIRST PAGE     
//  HOW DO I SHOW RESULTS 20-30   
//===========================================================

//$request->setPageToken($page_token); 

$request->setDimensions($dimensions);   
$request->setMetrics($metrics);  
$request->setDimensionFilterClauses($dimensionFilterClause);
$request->setMetricFilterClauses(array($metricFilterClause));
$request->setOrderBys($ordering); 
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();  
$body->setReportRequests( array( $request) );   
return  $analytics->reports->batchGet( $body );

J'ai découvert qu'il existe une fonction setPageToken() et une fonction getPageToken() qui, je suppose, a quelque chose à voir avec cela.

Quelqu'un peut-il m'expliquer comment faire ? L'exemple serait très utile. Merci.

2voto

Matt Points 198

Bibliothèques des clients

El Bibliothèques clientes PHP sont générés à partir des descriptions des ressources trouvées dans le documents de référence . Tout Object() deviendra une classe dans la bibliothèque client de PHP. Par exemple, la classe [Object(Metric]](https://developers.google.com/analytics/devguides/reporting/core/v4/rest/v4/reports/batchGet#metric) deviendra Google_Service_AnalyticsReporting_Metric . Il est important d'être capable de regarder la description de la ressource et de comprendre la structure des classes générées, sinon, utilisez la source générée pour vous guider dans la façon dont les classes sont structurées.

Ainsi, dans le titre de votre question, vous demandez : "Comment définir l'alias de la dimension ?" Si vous regardez la description de la ressource et la source générée, vous remarquerez que seul l'attribut Metric a la propriété alias . Cela s'explique par le fait que le Metric prend un expression et non un name domaine. Vous pouvez en fait fournir une expression mathématique telle que ga:sessions * ga:users mais une telle chaîne de caractères peut prêter à confusion et il est donc préférable de définir un paramètre alias pour cela expression .

Limites et quotas de l'API

Vous demandez 10 rangées à la fois et vous voulez les paginer. Je vous encourage vivement à faire la demande maximale afin d'utiliser le plus efficacement possible votre serveur de données. Quota API . L'API est une ressource partagée et si vous l'utilisez de manière inefficace, elle ne vous mènera pas aussi loin. Ceci étant dit, je décrirai ci-dessous comment effectuer la pagination.

Pagination PHP

Supposons que vous sachiez comment effectuer une requête réussie avec auth et tout puisque vous avez lu attentivement la page d'accueil du site. Bonjour Analytics PHP guide :

  // Create the ReportRequest object.
  $request = new Google_Service_AnalyticsReporting_ReportRequest();
  $request->setViewId($VIEW_ID);
  $request->setDateRanges($dateRange);
  $request->setMetrics($metrics);
  $request->setDimensions($dimensions);

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

Génial, bien joué. La partie la plus difficile est derrière vous. Tu es un codeur intelligent donc tu vas t'accrocher à ça. $response y $request parce que vous pensez qu'ils pourraient être importants. Donc vous allez de l'avant et analysez la réponse :

  for ( $reportIndex = 0; $reportIndex < count( $response ); $reportIndex++ ) {
    $report = $response[ $reportIndex ];
    $header = $report->getColumnHeader();
    $dimensionHeaders = $header->getDimensions();
    $metricHeaders = $header->getMetricHeader()->getMetricHeaderEntries();
    $rows = $report->getData()->getRows();
    $nextPageToken = $report->getNextPageToken();
    ...
    }

Vous avez obtenu de belles informations de ce rapport, quelques dimensions et métriques, il semble que votre nouveau site de commerce électronique se porte bien. Tellement bien en fait que vous avez besoin d'obtenir plus de données de ce rapport depuis que vous avez atteint le seuil de rentabilité. pageSize avant d'avoir toutes les lignes nécessaires pour planifier votre stratégie de Q3. Ce n'est pas grave, vous êtes un codeur intelligent et vous vous êtes accroché à ce $request y que $nextPageToken . Vous savez exactement ce qu'il faut faire ; vous allez appeler l'API à nouveau avec l'option $nextPageToken :

  $request->setPageToken($nextPageToken);

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

Vous venez donc de paginer à travers plusieurs pages. Rincer, laver et répéter. Pour ceux qui souhaitent que le JSON équivalent ici :

Exemple de pagination JSON

Demande originale :

{
  "reportRequests": 
  [
    {
      "viewId": "XXXX",
      "metrics": 
      [
        {
          "expression": "ga:users"
        }
      ],
      "dimensions": 
      [
        {
          "name": "ga:pagepath"
        },
        {
          "name": "ga:browser"
        },
        {
          "name": "ga:country"
        }
      ]
    }
  ]
}

Réponse :

{
 "reports": [
  {
   "columnHeader": {
    "dimensions": [
     "ga:pagepath",
     "ga:browser",
     "ga:country"
    ],
    "metricHeader": {
     "metricHeaderEntries": [
      {
       "name": "ga:users",
       "type": "INTEGER"
      }
     ]
    }
   },
   "data": {
    "rows": [
    ...

    ],
    "totals": [
     {
      "values": [
       "3739"
      ]
     }
    ],
    "rowCount": 1109,
    "minimums": [
     {
      "values": [
       "1"
      ]
     }
    ],
    "maximums": [
     {
      "values": [
       "359"
      ]
     }
    ]
   },
   "nextPageToken": "1000"
  }
 ]
}

Deuxième demande :

{
  "reportRequests": 
  [
    {
      "viewId": "XXXX",
      "metrics": 
      [
        {
          "expression": "ga:users"
        }
      ],
      "dimensions": 
      [
        {
          "name": "ga:pagepath"
        },
        {
          "name": "ga:browser"
        },
        {
          "name": "ga:country"
        }
      ],
      "pageToken": "1000"
    }
  ]
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X