Как использовать регулярные выражения с 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);

Посмотрите, работает это или нет.

Другие вопросы по тегам