Используя этот пакет, вы можете легко получить данные из Google Analytics.
Вот несколько примеров предоставленных методов:
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 ));
Большинство методов возвращают объект IlluminateSupportCollection
содержащий результаты.
Мы вкладываем много ресурсов в создание лучших в своем классе пакетов с открытым исходным кодом. Вы можете поддержать нас, купив один из наших платных продуктов.
Мы очень признательны вам за отправку нам открытки из вашего родного города с указанием того, какой из наших пакетов вы используете. Наш адрес вы найдете на странице контактов. Все полученные открытки мы публикуем на нашей виртуальной стене открыток.
Этот пакет можно установить через Composer.
composer require spatie/laravel-analytics
При желании вы можете опубликовать файл конфигурации этого пакета с помощью этой команды:
php artisan vendor:publish --tag= " analytics-config "
Следующий файл конфигурации будет опубликован в 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 ' ,
],
];
Первое, что вам нужно сделать, это получить некоторые учетные данные для использования Google API. Я предполагаю, что вы уже создали учетную запись Google и вошли в нее. Перейдите на сайт Google API и выберите или создайте проект.
Далее мы должны указать, какие API может использовать проект. Перейдите в библиотеку API и найдите «API данных Google Analytics».
Выберите «Включить», чтобы включить API.
Теперь, когда вы создали проект, имеющий доступ к API Analytics, пришло время загрузить файл с этими учетными данными. Нажмите «Учетные данные» на боковой панели. Вам понадобится создать «Ключ сервисной учетной записи».
На следующем экране вы можете дать учетной записи службы имя. Вы можете назвать его как угодно. В идентификаторе сервисного аккаунта вы увидите адрес электронной почты. Мы будем использовать этот адрес электронной почты позже в этом руководстве.
Перейдите на экран сведений о созданной учетной записи службы и выберите «Ключи», в раскрывающемся списке «Добавить ключ» выберите «Создать новый ключ».
Выберите «JSON» в качестве типа ключа и нажмите «Создать», чтобы загрузить файл JSON.
Сохраните json внутри вашего проекта Laravel в месте, указанном в ключе service_account_credentials_json
файла конфигурации этого пакета. Поскольку файл json содержит потенциально конфиденциальную информацию, я не рекомендую помещать его в репозиторий git.
Я предполагаю, что вы уже создали учетную запись Analytics на сайте Analytics и используете новые свойства GA4.
Сначала вам нужно будет узнать идентификатор вашего объекта недвижимости. В Analytics перейдите в «Настройки» > «Настройки свойств». Здесь вы сможете скопировать идентификатор вашего объекта недвижимости. Используйте это значение для ключа ANALYTICS_PROPERTY_ID
в вашем файле .env.
Теперь нам нужно будет предоставить доступ к созданному вами сервисному аккаунту. Перейдите в раздел «Управление доступом к объекту недвижимости» в разделе «Администратор». Нажмите знак плюса в правом верхнем углу, чтобы добавить нового пользователя.
На этом экране вы можете предоставить доступ к адресу электронной почты, указанному в ключе client_email
из файла JSON, который вы скачали на предыдущем шаге. Роли аналитика вполне достаточно.
После завершения установки вы можете легко получить данные Analytics. Почти все методы возвращают экземпляр IlluminateSupportCollection
.
Вот несколько примеров использования точек
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
— это Collection
, в которой каждый элемент представляет собой массив, содержащий ключевые date
, visitors
и pageViews
Если вы хотите иметь больший контроль над периодом, за который хотите получить данные, вы можете передать startDate
и endDate
в объект периода.
$ startDate = Carbon:: now ()-> subYear ();
$ endDate = Carbon:: now ();
Period:: create ( $ startDate , $ endDate );
public function fetchVisitorsAndPageViews( Period $ period ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи activeUsers
, screenPageViews
и pageTitle
.
public function fetchVisitorsAndPageViewsByDate( Period $ period ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи date
, activeUsers
, screenPageViews
и pageTitle
.
public function fetchTotalVisitorsAndPageViews( Period $ period ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи date
, date
, visitors
и pageViews
.
public function fetchMostVisitedPages( Period $ period , int $ maxResults = 20 ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи fullPageUrl
, pageTitle
и screenPageViews
.
public function fetchTopReferrers( Period $ period , int $ maxResults = 20 ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи screenPageViews
и pageReferrer
.
public function fetchUserTypes( Period $ period ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи activeUsers
и newVsReturning
, которые могут быть равны new
или returning
.
public function fetchTopBrowsers( Period $ period , int $ maxResults = 10 ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи screenPageViews
и browser
.
public function fetchTopCountries( Period $ period , int $ maxResults = 10 ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи screenPageViews
и country
.
public function fetchTopOperatingSystems( Period $ period , int $ maxResults = 10 ): Collection
Функция возвращает Collection
, в которой каждый элемент представляет собой массив, содержащий ключи screenPageViews
и operatingSystem
.
Для всех остальных запросов вы можете использовать функцию get
.
public function get( Period $ period , array $ metrics , array $ dimensions = [], int $ limit = 10 , array $ orderBy = [], FilterExpression $ dimensionFilter = null , FilterExpression $ metricFilter = null ): Collection
Вот дополнительная информация об аргументах, которые вы можете передать:
Period $period
: объект SpatieAnalyticsPeriod, указывающий дату начала и окончания вашего запроса.
array $metrics
: массив метрик для извлечения. Список всех показателей вы можете найти здесь.
array $dimensions
: массив измерений, по которому группируются результаты. Список всех размеров вы можете найти здесь.
int $limit
: максимальное количество возвращаемых результатов.
array $orderBy
: объектов OrderBy для сортировки результатов.
array $offset
: по умолчанию 0, вы можете использовать это в сочетании с параметром $limit для нумерации страниц.
bool $keepEmptyRows
: Если значение false или не указано, каждая строка со всеми метриками, равными 0, не будет возвращена. Если это правда, эти строки будут возвращены, если они не будут удалены фильтром отдельно.
Например:
$ orderBy = [
OrderBy:: dimension ( ' date ' , true ),
OrderBy:: metric ( ' pageViews ' , false ),
];
FilterExpression $dimensionFilter
: отфильтровать результат, чтобы он включал только определенные значения измерения. Более подробную информацию можно найти здесь.
Например:
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
: фильтр, применяемый после агрегирования строк отчета, аналогично предложению SQL Have. В этом фильтре нельзя использовать размеры. Более подробную информацию можно найти здесь.
Например:
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
Пожалуйста, посетите CHANGELOG для получения дополнительной информации о том, что изменилось за последнее время.
Пожалуйста, смотрите ВКЛАД для получения подробной информации.
Если вы обнаружили ошибку, связанную с безопасностью, отправьте электронное письмо по адресу [email protected] вместо использования системы отслеживания проблем.
И отдельное спасибо Caneco за логотип.
Лицензия MIT (MIT). Пожалуйста, смотрите файл лицензии для получения дополнительной информации.