如何在PHP中使用dimensionFilter和matchType创建报告?(GA4)

Sta*_* dc 6 php google-analytics-4

我正在尝试将 Google Analytics Data API v1 与 PHP 结合使用。我使用 Composer 导入了 google/analytics-data,然后正确设置了整个 API,并且获得了所有包含视图的页面。但我需要使用过滤器根据 URL 过滤结果。

    $client = new BetaAnalyticsDataClient();
    $response = $client->runReport([
        'property' => 'properties/' . $property_id,
        'dateRanges' => [
            new DateRange([
                'start_date' => '2021-01-01',
                'end_date' => 'today',
            ]),
        ],
        'dimensions' => [new Dimension(
            [
                'name' => 'pagePath',
            ]
        ),
        ],
        'metrics' => [new Metric(
            [
                'name' => 'screenPageViews',
            ]
        )
        ],
        'dimensionFilter' => [new DimensionExpression(
            [
                'filter' => [new filter(
                    [
                    'stringFilter' => [new stringFilter([
                        'value' => '/orders/',
                        'match_type' => 'BEGINS_WITH'
                        ]
                    )]
                    ]
                )]
            ]
        )]

    ]);
Run Code Online (Sandbox Code Playgroud)

但如何添加dimensionFilter

"dimensionFilter": {
    "filter": {
      "stringFilter": {
        "value": "/orders/",
        "matchType": "BEGINS_WITH"
      },
      "fieldName": "pagePath"
    }
  }
Run Code Online (Sandbox Code Playgroud)

结果是:

遇到未捕获的异常类型:UnexpectedValueException

消息:无效的消息属性:stringFilter

文件名: ...vendor\google\protobuf\src\Google\Protobuf\Internal\Message.php

小智 12

有用。

'dimensionFilter' => new FilterExpression([
  'filter' => new Filter([
    'field_name' => 'pagePath',
    'string_filter' => new Filter\StringFilter([
      'match_type' => Filter\StringFilter\MatchType::BEGINS_WITH,
      'value' => '/orders/',
     ])
  ])
]),
Run Code Online (Sandbox Code Playgroud)

  • 虽然此代码可以解决问题,但包括解释如何以及为何解决问题将真正有助于提高帖子的质量,并可能会带来更多的赞成票。请记住,您是在为将来的读者回答问题,而不仅仅是现在提问的人。 (6认同)

小智 0

尝试这样的事情:

'dimensionFilter' => new FilterExpression([
    'filter' => new Filter([
        'field_name' => 'pagePath',
        'string_filter' => new StringFilter([
            'value' => '/orders/',
            'match_type' => 'BEGINS_WITH'
        ])
    ])
])
Run Code Online (Sandbox Code Playgroud)