Как использовать регулярные выражения с Google Analytics Reporting API V4
Я использую клиентскую библиотеку Google для PHP для извлечения данных из Google Analytics с использованием API отчетов Google Analytics версии 4. Проблема в том, что она не принимает мое регулярное выражение. Я подтвердил, что регулярное выражение работает в Google Query Explorer. Когда я пытаюсь использовать его с классом Google_Service_AnalyticsReporting_DimensionFilter(), он не работает. Выходные данные показывают, что Итоги равны нулю, что означает, что записи не были возвращены. Пожалуйста, посмотрите на код ниже:
function getReport($analytics)
{
// Replace with your view ID, for example XXXX.
$VIEW_ID = $this->viewId;
// Create the DateRange object.
$dateRange = new Google_Service_AnalyticsReporting_DateRange();
$dateRange->setStartDate($this->startDate);
$dateRange->setEndDate($this->endDate);
// Create the Metrics object.
$sessions = new Google_Service_AnalyticsReporting_Metric();
$sessions->setExpression($this->metrics);
$sessions->setAlias($this->metricAlias);
//Create the Dimensions object.
$pagePath = new Google_Service_AnalyticsReporting_Dimension();
$pagePath->setName("ga:pagePath");
// Create Dimension Filter 1, Must use: =~
$dimensionFilter1 = new Google_Service_AnalyticsReporting_DimensionFilter();
$dimensionFilter1->setDimensionName("ga:pagePath");
$dimensionFilter1->setOperator('REGEXP');
$dimensionFilter1->setExpressions('27-of-the-most-beautiful-small-towns-to-visit-in-europe');
$dimensionFilter1->setNot(FALSE);
// Create Dimension Filter 2, Must use: !~
$dimensionFilter2 = new Google_Service_AnalyticsReporting_DimensionFilter();
$dimensionFilter2->setDimensionName("ga:pagePath");
$dimensionFilter2->setOperator('REGEXP');
$dimensionFilter2->setExpressions('\/.*?\/[0-9]+');
$dimensionFilter2->setNot(TRUE);
// Create Dimension Filter 3, Must use !~
$dimensionFilter3 = new Google_Service_AnalyticsReporting_DimensionFilter();
$dimensionFilter3->setDimensionName("ga:pagePath");
$dimensionFilter3->setOperator('REGEXP');
$dimensionFilter3->setExpressions('\/.*?\/images/images');
$dimensionFilter3->setNot(TRUE);
// Create the DimensionFilterClauses
$dimensionFilterClause = new Google_Service_AnalyticsReporting_DimensionFilterClause();
$dimensionFilterClause->setFilters([$dimensionFilter1, $dimensionFilter2, $dimensionFilter3]);
// Create the ReportRequest object.
$request = new Google_Service_AnalyticsReporting_ReportRequest();
$request->setViewId($VIEW_ID);
$request->setDateRanges($dateRange);
$request->setMetrics([$sessions]);
$request->setDimensions([$pagePath]);
$request->setDimensionFilterClauses([$dimensionFilterClause]);
$request->setIncludeEmptyRows(false);
$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests([$request]);
return $analytics->reports->batchGet($body);
}
Этот код не правильный?
// Create Dimension Filter 1.
$dimensionFilter = new Google_Service_AnalyticsReporting_DimensionFilter();
$dimensionFilter->setDimensionName("ga:pagePath");
$dimensionFilter->setOperator('REGEXP');
$dimensionFilter->setExpressions('ga:PagePath !~ \/.*?\/[0-9]+');
1 ответ
Да. В коде есть ошибка. Вы не должны включать имя измерения, т.е. ga:pagePath
в setExpression
метод.
Я полагаю, вы пытаетесь добавить Does not match Regular Expression
оператор в фильтре.
Итак, ваш код должен быть таким:
$dimensionFilter = new Google_Service_AnalyticsReporting_DimensionFilter();
$dimensionFilter->setDimensionName("ga:pagePath");
$dimensionFilter->setOperator('REGEXP');
$dimensionFilter->setExpressions('\/.*?\/[0-9]+');
$dimensionFilter->setNot(TRUE);
Посмотрите, работает это или нет.