Takeaways Key
Di dalam GA_SERVICE :: Akaun Kami membuat Google_ANALYTICSSERVICE baru dengan pelanggan yang diberi kuasa dan kemudian menanyakan API untuk senarai akaun.
<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>
Dalam kes ini hasilnya adalah array, tetapi API juga menggunakan objek, kita hanya perlu menentukan bahawa di dalam fungsi GA_Service :: init kami. Dalam contoh berikut, saya akan menggunakan hasil array.
fungsi ListManagementCounts mengembalikan array yang mengandungi:
<span>$this->client->setUseObjects(true);</span>
Perhatikan bahawa apabila anda mengembalikan array sebagai respons, Laravel secara automatik mengkodekan hasilnya sebagai respons JSON dan menghantarnya ke penyemak imbas.
<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>
Hasilnya mengandungi maklumat mengenai jumlah hasil dan beberapa maklumat penomboran juga. Lajur Item mengandungi senarai akaun dengan ID mereka, keizinan, dan lain -lain, tetapi kami melingkari item untuk mengekstrak hanya ID dan nama dari akaun.
Jika anda ingin menghasilkan penomboran, anda sentiasa boleh lulus lebih banyak pilihan untuk ListManagementAccount:
Mari kita anggap bahawa kita akan menunjukkan pengguna senarai akaun mereka, dan apabila mereka memilih satu, kita memuatkan senarai sifat yang berkaitan dengannya.
<span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
GA_SERVICE :: Properties menerima ID akaun, dan mengembalikan senarai sifat untuk akaun itu. Pada dasarnya kita mempunyai proses yang sama, seperti mengambil akaun.
<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>
Setiap harta mempunyai subset pandangan. Secara lalai, Google menambah paparan yang dipanggil semua data laman web untuk setiap harta baru.
[ { id: "UA-52317977-1", name: "Prop1" }, { id: "UA-52317977-2", name: "Prop1" } ]
Menggunakan ID dari senarai sifat dan ID akaun yang diambil dari bahagian pertama, kami akan menanyakan API Google Analytics untuk senarai paparan yang tersedia untuk harta akaun yang diberikan.
<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>
Dalam penyemak imbas, ketika memukul/melihat/{account_id}/{property_id}, kita harus mendapatkan sesuatu yang serupa dengan:
<span>$this->client->setUseObjects(true);</span>
Untuk menanyakan beberapa statistik dari Google Analytics kita perlu menyediakan satu set dimensi dan metrik.
Untuk merebut senarai metadata yang tersedia, anda hanya boleh menggunakan curl untuk menanyakan data dari url berikut https://www.googleapis.com/analytics/v3/metadata/ga/columns.
Google Analytics memberi kita atribut ETAG yang boleh digunakan untuk caching respons supaya kita tidak perlu menanyakan API pada setiap permintaan.
<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>
Kaedah MakeRequest mengembalikan contoh Google_HTTPREQUEST, dan kami boleh menggunakan getResponseBody untuk mendapatkan respons metadata kami.
<span>$service->management_accounts->listManagementAccounts( [ 'max-results' => $max_results, 'start-index' => $start_index ] );</span>
Sekarang, apabila mengakses laluan /metadata di penyemak imbas anda, anda harus mendapatkan pelbagai dimensi dan satu lagi untuk metrik, dan masing -masing mengandungi senarai elemen berkumpulan.
<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>
kita perlu mengemas kini indeks homecontroller@kami untuk menunjukkan paparan halaman rumah.
seperti yang anda lihat dari tangkapan skrin, apabila pengguna memilih akaun kami secara tidak segerak menukar harta dan pandangan dengan sewajarnya. Untuk mencapai itu, saya menulis beberapa JS mudah yang boleh anda periksa di repo akhir.
[ { id: "UA-52317977-1", name: "Prop1" }, { id: "UA-52317977-2", name: "Prop1" } ]
Pelaporan API
GA_SERVICE kami :: Laporan Menerima Empat Argumen: ID Lihat, Tarikh Permulaan dan Akhir dan pelbagai metrik.
<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>
Google tidak dapat mengembalikan semua data warisan anda - sebaliknya kami menyediakan tarikh permulaan dan tamat. Dalam contoh saya, saya menanyakan hasil bulan lalu.
Parameter ketiga adalah senarai metrik yang kita ada dari pemilihan pengguna.
Parameter pilihan keempat adalah pelbagai pilihan.
-Max-Results: Bilangan maksimum hasil. (Kami menggunakan 10 untuk mempercepatkan respons).
- Dimensi: Senarai nilai yang dipisahkan koma. (GA: Negara, GA: City)
- Penapis: Senarai peraturan koma yang dipisahkan untuk diperolehi dengan hasilnya. (GA: Negara! = Amerika Syarikat, GA: PAGEVIEWS> 100)
Dalam contoh ini, kami mengecualikan Amerika Syarikat dari senarai dimensi dan hanya menunjukkan paparan halaman yang lebih besar daripada 100.
- Segmen: ID Segmen Lanjutan yang akan digunakan untuk data.
- Sort: Pesanan keputusan mengikut dimensi atau metrik. Boleh menggabungkan pelbagai dimensi dan metrik. (GA: Negara, -GA: PAGEVIEWS = Pesanan oleh GA: Negara Ascending, dan oleh GA: PAGEVIEWS DESCENDING.
-Mula-indeks: boleh digunakan untuk penomboran.
<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>
Setelah memanggil Google_analyticsService :: GET Kaedah, kami menggunakan senarai item hasil, tajuk lajur, dan jumlah hasil untuk mengeluarkan hasilnya sebagai jadual.
penapis
<span>$this->client->setUseObjects(true);</span>
Segmen
Anda boleh melanjutkan demo dengan menambahkan elemen pilih baru dengan senarai segmen yang tersedia, dan lulus ID ke kaedah GET seperti yang dibincangkan sebelumnya.
<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>
membungkus
Dalam siri ini, kami memberi tumpuan kepada penggunaan asas Google Analytics, tetapi anda boleh melanjutkan demo dengan pilihan dari Dashboard Google Analytics.
anda boleh menyemak repo akhir untuk kod sumber tutorial ini.
soalan? Komen? Izinkan saya tahu!
Bolehkah saya menggunakan Google Analytics API V3 dengan PHP untuk mengesan data masa nyata? API V3 dengan PHP untuk mengesan data masa nyata. API menyediakan API pelaporan masa sebenar yang boleh anda gunakan untuk mendapatkan data masa nyata seperti bilangan pengguna aktif di laman web anda. 🎜> Anda boleh menapis data apabila menggunakan Google Analytics API V3 dengan PHP dengan menentukan parameter penapis dalam permintaan API anda. Parameter ini membolehkan anda menyekat data yang dikembalikan oleh API untuk memenuhi kriteria tertentu. Boleh menggunakan Google Analytics API V3 dengan PHP untuk mendapatkan data dari pelbagai akaun Google Analytics. Anda hanya perlu mengesahkan dengan setiap akaun secara berasingan dan membuat permintaan API berasingan untuk setiap akaun.
Atas ialah kandungan terperinci Menggunakan Google Analytics API V3 dengan PHP: Mengambil Data. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!