Usando este pacote você pode recuperar facilmente dados do Google Analytics.
Aqui estão alguns exemplos dos métodos fornecidos:
use Spatie Analytics Facades Analytics ;
use Spatie Analytics Period ;
/ / fetch the most visited pages for today and the past week
Analytics:: fetchMostVisitedPages (Period:: days ( 7 ));
/ / fetch visitors and page views for the past week
Analytics:: fetchVisitorsAndPageViews (Period:: days ( 7 ));
A maioria dos métodos retornará um objeto IlluminateSupportCollection
contendo os resultados.
Investimos muitos recursos na criação dos melhores pacotes de código aberto. Você pode nos apoiar comprando um de nossos produtos pagos.
Agradecemos muito que você nos envie um cartão postal de sua cidade natal, mencionando qual(is) de nossos pacotes você está usando. Você encontrará nosso endereço em nossa página de contato. Publicamos todos os cartões postais recebidos em nosso mural virtual de cartões postais.
Este pacote pode ser instalado através do Composer.
composer require spatie/laravel-analytics
Opcionalmente, você pode publicar o arquivo de configuração deste pacote com este comando:
php artisan vendor:publish --tag= " analytics-config "
O seguinte arquivo de configuração será publicado em config/analytics.php
return [
/ *
* The property id of which you want to display data .
* /
' property_id ' => env ( ' ANALYTICS_PROPERTY_ID ' ),
/ *
* Path to the client secret json file . Take a look at the README of this package
* to learn how to get this file . You can also pass the credentials as an array
* instead of a file path .
* /
' service_account_credentials_json ' => storage_path ( ' app/analytics/service-account-credentials.json ' ),
/ *
* The amount of minutes the Google API responses will be cached .
* If you set this to zero , the responses won 't be cached at all.
*/
' cache_lifetime_in_minutes ' => 60 * 24 ,
/ *
* Here you may configure the "store" that the underlying Google_Client will
* use to store it 's data. You may also add extra parameters that will
* be passed on setCacheConfig (see docs for google-api-php-client).
*
* Optional parameters: "lifetime", "prefix"
*/
' cache ' => [
' store ' => ' file ' ,
],
];
A primeira coisa que você precisa fazer é obter algumas credenciais para usar as APIs do Google. Presumo que você já tenha criado uma conta do Google e esteja conectado. Acesse o site da API do Google e selecione ou crie um projeto.
A seguir devemos especificar quais APIs o projeto pode consumir. Vá para a Biblioteca de APIs e pesquise "API de dados do Google Analytics".
Escolha ativar para ativar a API.
Agora que você criou um projeto que tem acesso à API do Analytics, é hora de baixar um arquivo com essas credenciais. Clique em “Credenciais” na barra lateral. Você desejará criar uma "chave de conta de serviço".
Na próxima tela, você pode dar um nome à conta de serviço. Você pode nomeá-lo como quiser. No ID da conta de serviço, você verá um endereço de e-mail. Usaremos esse endereço de e-mail posteriormente neste guia.
Vá para a tela de detalhes da sua conta de serviço criada e selecione "chaves". No menu suspenso "Adicionar chave", selecione "Criar nova chave".
Selecione "JSON" como tipo de chave e clique em "Criar" para baixar o arquivo JSON.
Salve o json dentro do seu projeto Laravel no local especificado na chave service_account_credentials_json
do arquivo de configuração deste pacote. Como o arquivo json contém informações potencialmente confidenciais, não recomendo enviá-lo ao seu repositório git.
Presumo que você já criou uma conta do Analytics no site do Analytics e está usando as novas propriedades do GA4.
Primeiro você precisará saber o ID da sua propriedade. No Analytics, vá para Configurações > Configurações de propriedade. Aqui você poderá copiar o ID da sua propriedade. Use esse valor para a chave ANALYTICS_PROPERTY_ID
em seu arquivo .env.
Agora precisaremos dar acesso à conta de serviço que você criou. Vá para "Gerenciamento de acesso à propriedade" na seção Admin da propriedade. Clique no sinal de mais no canto superior direito para adicionar um novo usuário.
Nesta tela você pode conceder acesso ao endereço de e-mail encontrado na chave client_email
do arquivo json que você baixou na etapa anterior. A função de analista é suficiente.
Quando a instalação estiver concluída, você poderá recuperar facilmente os dados do Analytics. Quase todos os métodos retornarão uma instância IlluminateSupportCollection
.
Aqui estão alguns exemplos usando períodos
use Spatie Analytics Facades Analytics ;
/ / retrieve visitors and page view data for the current day and the last seven days
$ analyticsData = Analytics:: fetchVisitorsAndPageViews (Period:: days ( 7 ));
/ / retrieve visitors and page views since the 6 months ago
$ analyticsData = Analytics:: fetchVisitorsAndPageViews (Period:: months ( 6 ));
$analyticsData
é uma Collection
em que cada item é um array que contém as chaves date
, visitors
e pageViews
Se quiser ter mais controle sobre o período para o qual deseja buscar dados, você pode passar um startDate
e um endDate
para o objeto de período.
$ startDate = Carbon:: now ()-> subYear ();
$ endDate = Carbon:: now ();
Period:: create ( $ startDate , $ endDate );
public function fetchVisitorsAndPageViews( Period $ period ): Collection
A função retorna uma Collection
na qual cada item é um array que contém as chaves activeUsers
, screenPageViews
e pageTitle
.
public function fetchVisitorsAndPageViewsByDate( Period $ period ): Collection
A função retorna uma Collection
na qual cada item é um array que contém as chaves date
, activeUsers
, screenPageViews
e pageTitle
.
public function fetchTotalVisitorsAndPageViews( Period $ period ): Collection
A função retorna uma Collection
na qual cada item é uma matriz que contém as chaves date
, date
, visitors
e pageViews
.
public function fetchMostVisitedPages( Period $ period , int $ maxResults = 20 ): Collection
A função retorna uma Collection
na qual cada item é um array que contém as chaves fullPageUrl
, pageTitle
e screenPageViews
.
public function fetchTopReferrers( Period $ period , int $ maxResults = 20 ): Collection
A função retorna uma Collection
na qual cada item é um array que contém as chaves screenPageViews
e pageReferrer
.
public function fetchUserTypes( Period $ period ): Collection
A função retorna uma Collection
em que cada item é um array que contém as chaves activeUsers
e newVsReturning
que podem ser iguais a new
ou returning
.
public function fetchTopBrowsers( Period $ period , int $ maxResults = 10 ): Collection
A função retorna uma Collection
em que cada item é um array que contém as chaves screenPageViews
e browser
.
public function fetchTopCountries( Period $ period , int $ maxResults = 10 ): Collection
A função retorna uma Collection
em que cada item é um array que contém as chaves screenPageViews
e country
.
public function fetchTopOperatingSystems( Period $ period , int $ maxResults = 10 ): Collection
A função retorna uma Collection
em que cada item é uma matriz que contém as chaves screenPageViews
e operatingSystem
.
Para todas as outras consultas você pode usar a função get
.
public function get( Period $ period , array $ metrics , array $ dimensions = [], int $ limit = 10 , array $ orderBy = [], FilterExpression $ dimensionFilter = null , FilterExpression $ metricFilter = null ): Collection
Aqui estão algumas informações extras sobre os argumentos que você pode passar:
Period $period
: um objeto SpatieAnalyticsPeriod para indicar a data de início e término da sua consulta.
array $metrics
: um array de métricas a serem recuperadas. Você pode encontrar uma lista de todas as métricas aqui.
array $dimensions
: um array de dimensões para agrupar os resultados. Você pode encontrar uma lista de todas as dimensões aqui.
int $limit
: o número máximo de resultados a serem retornados.
array $orderBy
: de objetos OrderBy pelos quais classificar os resultados.
array $offset
: o padrão é 0, você pode usar isso em combinação com o parâmetro $limit para ter paginação.
bool $keepEmptyRows
: Se for falso ou não especificado, cada linha com todas as métricas iguais a 0 não será retornada. Se for verdade, estas linhas serão devolvidas se não forem removidas separadamente por um filtro.
Por exemplo:
$ orderBy = [
OrderBy:: dimension ( ' date ' , true ),
OrderBy:: metric ( ' pageViews ' , false ),
];
FilterExpression $dimensionFilter
: filtre o resultado para incluir apenas valores de dimensão específicos. Você pode encontrar mais detalhes aqui.
Por exemplo:
use Google Analytics Data V1beta Filter ;
use Google Analytics Data V1beta FilterExpression ;
use Google Analytics Data V1beta Filter StringFilter ;
use Google Analytics Data V1beta Filter StringFilter MatchType ;
$ dimensionFilter = new FilterExpression ([
' filter ' => new Filter ([
' field_name ' => ' eventName ' ,
' string_filter ' => new StringFilter ([
' match_type ' => MatchType:: EXACT ,
' value ' => ' click ' ,
]),
]),
]);
FilterExpression $metricFilter
: filtro aplicado após agregar as linhas do relatório, semelhante à cláusula SQL do SQL. As dimensões não podem ser usadas neste filtro. Você pode encontrar mais detalhes aqui.
Por exemplo:
use Google Analytics Data V1beta Filter ;
use Google Analytics Data V1beta FilterExpression ;
use Google Analytics Data V1beta Filter NumericFilter ;
use Google Analytics Data V1beta NumericValue ;
use Google Analytics Data V1beta Filter NumericFilter Operation ;
$ metricFilter = new FilterExpression ([
' filter ' => new Filter ([
' field_name ' => ' eventCount ' ,
' numeric_filter ' => new NumericFilter ([
' operation ' => Operation:: GREATER_THAN ,
' value ' => new NumericValue ([
' int64_value ' => 3 ,
]),
]),
]),
]);
## Testing
Run the tests with:
``` bash
vendor/bin/pest
Consulte CHANGELOG para obter mais informações sobre o que mudou recentemente.
Consulte CONTRIBUINDO para obter detalhes.
Se você encontrou um bug relacionado à segurança, envie um email para [email protected] em vez de usar o rastreador de problemas.
E um agradecimento especial ao Caneco pelo logótipo
A licença MIT (MIT). Consulte Arquivo de licença para obter mais informações.