Dans la première partie de notre série, nous avons introduit l'API Google Analytics, y compris l'utilisation de base. Dans cette partie, nous continuerons à créer notre démo et voir comment nous pouvons l'étendre avec plus de fonctionnalités.
Comme nous l'avons discuté dans la première partie, l'API de gestion est chargée d'obtenir des comptes d'utilisateurs, des propriétés, des vues… pour notre premier exemple, nous récupérerons la liste des comptes disponibles pour notre utilisateur authentifié.
<span>// app/src/GA_Service.php </span><span>public function accounts(){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_accounts = $service->management_accounts->listManagementAccounts(); </span> <span>$accounts = []; </span> <span>foreach ($man_accounts['items'] as $account) { </span> <span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ]; </span> <span>} </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/controllers/HomeController.php </span><span>public function accounts(){ </span> <span>$accounts = $this->ga->accounts(); </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/routes.php </span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
à l'intérieur de GA_Service :: Comptes, nous créons un nouveau Google_analyticsService avec notre client autorisé, puis interrogez l'API pour la liste des comptes.
Dans ce cas, le résultat est un tableau, mais l'API utilise également des objets, nous avons juste besoin de spécifier que dans notre fonction GA_SERVICE :: INIT. Dans les exemples suivants, je vais utiliser les résultats du tableau.
<span>$this->client->setUseObjects(true);</span>
La fonction ListManagementAccounts renvoie un tableau contenant:
<span>{ </span> kind<span>: "analytics#accounts", </span> <span>username: "me@mail.com", </span> <span>totalResults: 3, </span> <span>startIndex: 1, </span> <span>itemsPerPage: 1000, </span> <span>items: [ </span> <span>{ </span> id<span>: "4449308", </span> <span>kind: "analytics#account", </span> <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308", </span> <span>name: "me@mail.com", </span> <span>permissions: { </span> effective<span>: [ </span> <span>"COLLABORATE", </span> <span>"EDIT", </span> <span>"MANAGE_USERS", </span> <span>"READ_AND_ANALYZE" </span> <span>] </span> <span>}, </span> <span>created: "2013-10-01T11:04:28.478Z", </span> <span>updated: "2013-10-01T11:04:28.478Z", </span> <span>childLink: { </span> type<span>: "analytics#webproperties", </span> <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties" </span> <span>} </span> <span>} </span> <span>] </span><span>}</span>
Notez que lorsque vous retournez un tableau en réponse, Laravel code automatiquement le résultat en réponse JSON et l'envoie au navigateur.
Le résultat contient des informations sur le total des résultats et certaines informations de pagination. La colonne des éléments contient la liste des comptes avec leurs ID, autorisations, etc., mais nous avons fait un peu de boucle via des éléments pour extraire uniquement l'ID et le nom des comptes.
Si vous souhaitez avoir une pagination des résultats, vous pouvez toujours transmettre plus d'options à ListManagementAccount:
<span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
Supposons que nous allons afficher à nos utilisateurs leur liste de comptes, et lorsqu'ils en sélectionnent un, nous chargeons la liste des propriétés qui y sont associées.
<span>// app/src/GA_Service.php </span><span>public function properties( $account_id ){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>try { </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_properties = $service->management_webproperties->listManagementWebproperties($account_id); </span> <span>$properties = []; </span> <span>foreach ($man_properties['items'] as $property) { </span> <span>$properties[] = [ 'id' => $property['id'], 'name' => $property['name'] ]; </span> <span>}//foreach </span> <span>return json_encode($properties); </span> <span>} catch (Google_ServiceException $e) { </span> <span>return Response<span>::</span>json([ </span> <span>'status' => 0, </span> <span>'code' => 3, </span> <span>'message' => $e->getMessage() </span> <span>]); </span> <span>}//catch </span> <span>}//properties </span> <span>// app/controllers/HomeController.php </span><span>public function properties( $account_id ){ </span> <span>$properties = $this->ga->properties( $account_id ); </span> <span>return $properties; </span><span>}//properties </span> <span>// app/routes.php </span><span>Route<span>::</span>get( '/properties/{account_id}', [ 'uses' => 'HomeController@properties' ] )->where('account_id', '\d+');</span>
Les propriétés GA_SERVICE :: acceptent un ID de compte et renvoie la liste des propriétés pour ce compte. Nous avons essentiellement le même processus, comme récupérer les comptes.
[ { id: "UA-52317977-1", name: "Prop1" }, { id: "UA-52317977-2", name: "Prop1" } ]
Chaque propriété a un sous-ensemble de vues. Par défaut, Google ajoute une vue appelée toutes les données du site Web pour chaque nouvelle propriété.
En utilisant un ID à partir de la liste des propriétés et de l'ID de compte saisi de la première partie, nous interrogerons l'API Google Analytics pour la liste des vues disponibles pour une propriété de compte donnée.
<span>// app/src/GA_Service.php </span><span>public function accounts(){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_accounts = $service->management_accounts->listManagementAccounts(); </span> <span>$accounts = []; </span> <span>foreach ($man_accounts['items'] as $account) { </span> <span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ]; </span> <span>} </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/controllers/HomeController.php </span><span>public function accounts(){ </span> <span>$accounts = $this->ga->accounts(); </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/routes.php </span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
Dans le navigateur, lorsque vous frappez / vues / {account_id} / {propriété_id}, nous devons obtenir quelque chose de similaire à:
<span>$this->client->setUseObjects(true);</span>
Pour interroger certaines statistiques de Google Analytics, nous devons fournir un ensemble de dimensions et de métriques.
Pour saisir la liste des métadonnées disponibles, vous pouvez simplement utiliser Curl pour interroger les données à partir de l'URL suivante https://www.googleapis.com/analytics/v3/metadata/ga/columns.
Google Analytics nous donne un attribut ETAG qui peut être utilisé pour la mise en cache de la réponse afin que nous n'ayons pas à interroger l'API à chaque demande.
<span>{ </span> kind<span>: "analytics#accounts", </span> <span>username: "me@mail.com", </span> <span>totalResults: 3, </span> <span>startIndex: 1, </span> <span>itemsPerPage: 1000, </span> <span>items: [ </span> <span>{ </span> id<span>: "4449308", </span> <span>kind: "analytics#account", </span> <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308", </span> <span>name: "me@mail.com", </span> <span>permissions: { </span> effective<span>: [ </span> <span>"COLLABORATE", </span> <span>"EDIT", </span> <span>"MANAGE_USERS", </span> <span>"READ_AND_ANALYZE" </span> <span>] </span> <span>}, </span> <span>created: "2013-10-01T11:04:28.478Z", </span> <span>updated: "2013-10-01T11:04:28.478Z", </span> <span>childLink: { </span> type<span>: "analytics#webproperties", </span> <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties" </span> <span>} </span> <span>} </span> <span>] </span><span>}</span>
La méthode makerequest renvoie une instance Google_HttpRequest, et nous pouvons utiliser le GetResponseBody pour obtenir notre réponse de métadonnées.
<span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
Maintenant, lorsque vous accédez à l'itinéraire / métadonnées de votre navigateur, vous devriez obtenir un tableau de dimensions et un autre pour les mesures, et chacun d'eux contient une liste d'éléments groupés.
<span>// app/src/GA_Service.php </span><span>public function properties( $account_id ){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>try { </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_properties = $service->management_webproperties->listManagementWebproperties($account_id); </span> <span>$properties = []; </span> <span>foreach ($man_properties['items'] as $property) { </span> <span>$properties[] = [ 'id' => $property['id'], 'name' => $property['name'] ]; </span> <span>}//foreach </span> <span>return json_encode($properties); </span> <span>} catch (Google_ServiceException $e) { </span> <span>return Response<span>::</span>json([ </span> <span>'status' => 0, </span> <span>'code' => 3, </span> <span>'message' => $e->getMessage() </span> <span>]); </span> <span>}//catch </span> <span>}//properties </span> <span>// app/controllers/HomeController.php </span><span>public function properties( $account_id ){ </span> <span>$properties = $this->ga->properties( $account_id ); </span> <span>return $properties; </span><span>}//properties </span> <span>// app/routes.php </span><span>Route<span>::</span>get( '/properties/{account_id}', [ 'uses' => 'HomeController@properties' ] )->where('account_id', '\d+');</span>
Pour accélérer le processus, nous utiliserons Bootsnipp. Si l'utilisateur est connecté, nous afficherons la page d'accueil.
Nous devons mettre à jour notre HomeController @ index pour afficher la vue de la page d'accueil.
[ { id: "UA-52317977-1", name: "Prop1" }, { id: "UA-52317977-2", name: "Prop1" } ]
Comme vous pouvez le voir sur la capture d'écran, lorsque l'utilisateur sélectionne un compte, nous modifions de manière asynchrone la propriété et la vue en conséquence. Pour y parvenir, j'ai écrit des JS simples que vous pouvez vérifier dans le dépôt final.
En fournissant la vue, les mesures et les dimensions sélectionnées, nous pouvons obtenir des statistiques détaillées sur les utilisateurs et les interactions. Le résultat après la soumission de l'utilisateur sera quelque chose de similaire à:
<span>// app/src/GA_Service.php </span><span>public function views( $account_id, $property_id ){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>try { </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_views = $service->management_profiles->listManagementProfiles( $account_id, $property_id ); </span> <span>$views = []; </span> <span>foreach ($man_views['items'] as $view) { </span> <span>$views[] = [ 'id' => $view['id'], 'name' => $view['name'] ]; </span> <span>}//foreach </span> <span>return json_encode($views); </span> <span>} catch (Google_ServiceException $e) { </span> <span>return Response<span>::</span>json([ </span> <span>'status' => 0, </span> <span>'code' => 3, </span> <span>'message' => $e->getMessage() </span> <span>]); </span> <span>}//catch </span><span>}//views </span> <span>// app/controllers/HomeController.php </span><span>public function views( $account_id, $property_id ){ </span> <span>$views = $this->ga->views( $account_id ,$property_id ); </span> <span>return $views; </span><span>}//properties </span> <span>// app/routes.php </span><span>Route<span>::</span>get( '/views/{account_id}/{property_id}', [ 'uses' => 'HomeController@views' ] )->where([ 'account_id', '\d+', 'property_id', '\d+' ]);</span>
Notre GA_SERVICE :: Le rapport accepte quatre arguments: un ID de vue, une date de début et de fin et un tableau de mesures.
Google ne peut pas renvoyer toutes vos données héritées - à la place, nous fournissons une date de début et de fin. Dans mon exemple, j'ai interrogé les résultats du mois dernier.
Le troisième paramètre est la liste des mesures que nous avons déjà de la sélection des utilisateurs.
Le quatrième paramètre facultatif est un tableau d'options.
- Résultats max: le nombre maximum de résultats. (Nous avons utilisé 10 pour accélérer la réponse).
- Dimensions: une liste de valeurs séparées par des virgules. (GA: Country, GA: City)
- Filtres: une liste de règles séparées par des virgules à appliquer au résultat. (GA: Country! = USA, GA: PageViews> 100)
Dans cet exemple, nous avons exclu les États-Unis de la liste des dimensions et n'avons montré que des pages vues supérieures à 100.
- Segment: ID de segment avancé à appliquer aux données.
- Trier: commandez les résultats par dimensions ou paramètres. Peut combiner plusieurs dimensions et mesures. (GA: Pays, -ga: Page vues = Order by GA: Country Ascending, et par GA: Page vues descendant.
- Index de démarrage: peut être utilisé pour la pagination.
<span>// app/src/GA_Service.php </span><span>public function accounts(){ </span> <span>if( !$this->isLoggedIn() ){ </span> <span>//login </span> <span>} </span> <span>$service = new Google_AnalyticsService($this->client); </span> <span>$man_accounts = $service->management_accounts->listManagementAccounts(); </span> <span>$accounts = []; </span> <span>foreach ($man_accounts['items'] as $account) { </span> <span>$accounts[] = [ 'id' => $account['id'], 'name' => $account['name'] ]; </span> <span>} </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/controllers/HomeController.php </span><span>public function accounts(){ </span> <span>$accounts = $this->ga->accounts(); </span> <span>return $accounts; </span><span>}//accounts </span> <span>// app/routes.php </span><span>Route<span>::</span>get('/accounts', 'HomeController@accounts');</span>
Après avoir appelé Get Google_analyticsService :: Get Method, nous utilisons la liste des éléments de résultats, des en-têtes de colonne et des résultats totaux pour produire le résultat en tant que table.
Voyons maintenant comment nous pouvons étendre notre démo avec des filtres, du tri et des segments.
sont un moyen d'exclure certaines données du résultat renvoyé. Ils prennent la forme suivante:
<span>$this->client->setUseObjects(true);</span>
Vous pouvez combiner plusieurs filtres: vous pouvez utiliser des virgules (,) en tant qu'opérateur ou en semi-colon (;) en tant qu'opérateur.
Par défaut, Google Analytics Group Toutes vos données dans un groupe appelé toutes les sessions. Cependant, vous pouvez toujours choisir parmi les segments intégrés ou en créer un nouveau en fonction de vos besoins. Vous pouvez regrouper les données par référence, type d'appareil, âge, sexe, etc.
Vous pouvez étendre la démo en ajoutant un nouvel élément de sélection avec la liste des segments disponibles et transmettre l'ID à la méthode GET comme discuté précédemment.
<span>{ </span> kind<span>: "analytics#accounts", </span> <span>username: "me@mail.com", </span> <span>totalResults: 3, </span> <span>startIndex: 1, </span> <span>itemsPerPage: 1000, </span> <span>items: [ </span> <span>{ </span> id<span>: "4449308", </span> <span>kind: "analytics#account", </span> <span>selfLink: "https://www.googleapis.com/analytics/v3/management/accounts/4449308", </span> <span>name: "me@mail.com", </span> <span>permissions: { </span> effective<span>: [ </span> <span>"COLLABORATE", </span> <span>"EDIT", </span> <span>"MANAGE_USERS", </span> <span>"READ_AND_ANALYZE" </span> <span>] </span> <span>}, </span> <span>created: "2013-10-01T11:04:28.478Z", </span> <span>updated: "2013-10-01T11:04:28.478Z", </span> <span>childLink: { </span> type<span>: "analytics#webproperties", </span> <span>href: "https://www.googleapis.com/analytics/v3/management/accounts/4449308/webproperties" </span> <span>} </span> <span>} </span> <span>] </span><span>}</span>
Vous pouvez visiter la page / segments pour voir la liste des segments disponibles avec leurs identifiants, et vous pouvez bien sûr l'utiliser comme une option comme nous l'avons vu plus tôt.
L'API Google Analytics est très flexible et fournit de nombreuses fonctionnalités, mais la documentation n'est pas encore terminée et ne fournit pas de bons exemples d'utilisation. Vous obtenez beaucoup plus en creusant dans le code source et en testant les possibilités et limites.
Dans cette série, nous nous sommes concentrés sur l'utilisation de base de Google Analytics, mais vous pouvez étendre la démo avec des options du tableau de bord Google Analytics.
Vous pouvez vérifier le dépôt final du code source de ce tutoriel.
Questions? Commentaires? Faites-moi savoir!
Pour commencer avec Google Analytics API V3 avec PHP, vous devez d'abord créer un projet dans la console Google Developers. Après avoir créé le projet, activez l'API Google Analytics. Ensuite, créez des informations d'identification pour l'API. Vous recevrez un ID client et un secret client, que vous utiliserez pour authentifier votre application avec Google. Après cela, vous pouvez commencer à faire des demandes à l'API en utilisant PHP.
Avant de pouvoir utiliser Google Analytics API V3 avec PHP, Vous devez avoir un compte Google et accéder aux données Google Analytics que vous souhaitez récupérer. Vous devez également faire installer PHP sur votre serveur et une compréhension de base de la programmation PHP.
Pour authentifier votre application avec Google à l'aide de PHP, Vous devez utiliser l'ID client et le secret client que vous avez reçu lorsque vous avez créé vos informations d'identification API. Vous pouvez utiliser ces informations d'identification pour obtenir un jeton d'accès, que vous pouvez ensuite utiliser pour authentifier vos demandes d'API.
Pour récupérer des données de Google Analytique utilisant PHP, vous devez faire une demande GET à l'API Google Analytics. Vous pouvez spécifier les métriques, les dimensions et les filtres que vous souhaitez appliquer dans les paramètres de demande. L'API renverra les données demandées au format JSON, que vous pouvez ensuite analyser et utiliser dans votre application.
Lorsque vous utilisez Google Analytics API V3 Avec PHP, des erreurs peuvent se produire pour diverses raisons, telles que des paramètres de demande non valides ou des problèmes d'authentification. Vous pouvez gérer ces erreurs en vérifiant le code d'état HTTP et le message d'erreur renvoyé par l'API. Cela vous donnera des informations sur ce qui n'a pas fonctionné et comment les corriger.
Oui, vous pouvez utiliser Google Analytics API V3 avec PHP pour suivre les données en temps réel. L'API fournit une API de rapport en temps réel que vous pouvez utiliser pour récupérer des données en temps réel telles que le nombre d'utilisateurs actifs sur votre site.
Vous pouvez filtrer les données lorsque vous utilisez Google Analytics API V3 avec PHP en spécifiant les paramètres de filtre dans votre demande d'API. Ces paramètres vous permettent de restreindre les données renvoyées par l'API pour répondre aux critères spécifiques.
Oui, vous Peut utiliser Google Analytics API V3 avec PHP pour récupérer les données de plusieurs comptes Google Analytics. Il vous suffit de vous authentifier avec chaque compte séparément et de faire des demandes d'API distinctes pour chaque compte.
Vous pouvez pagincer les résultats lorsque vous utilisez Google Analytics API V3 avec PHP en utilisant les paramètres `` start-index '' et `` max-résults '' dans votre demande d'API. Ces paramètres vous permettent de spécifier la plage de résultats que vous souhaitez récupérer.
Vous pouvez trier les données lorsque vous utilisez Google Analytics API V3 avec PHP en spécifiant les paramètres de tri dans votre demande d'API. Ces paramètres vous permettent de commander les données renvoyées par l'API en fonction de mesures ou de dimensions spécifiques.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!