API данных Google Analytics v1Beta DimensionExpression\ConcatenateExpression

в порядке. поэтому мне удалось использовать функцию Analytics API «Попробовать сейчас» по адресу https://developers.google.com/analytics/devguides/reporting/data/v1/rest/v1beta/properties/runReport, и я могу получить результаты я нуждаюсь. что я не могу понять, так это как построить свой запрос на php и заставить работать конкатенацию. без конкатенации я получаю ожидаемые результаты. так ясно, что проблема в том, что я использую DimensionExpression. вот мой код на данный момент:

      
    $referrers = $client->runReport([
      'property' => 'properties/' . $property_id,
      'dateRanges' => [new DateRange([
        'start_date' => $dates['firstDayOfLastMonth']->format('Y-m-d'),
        'end_date' => $dates['lastDayOfLastMonth']->format('Y-m-d'),
        'name' => 'Last Month']
      )],
      'dimensions' => [
        [new Dimension(['name' => 'medium'])],
        [new Dimension(['name' => 'source'])],
        [new Dimension([
          'name' => 'Medium_Source',
          new DimensionExpression([
            'concatenate' => new DimensionExpression\ConcatenateExpression([
              'dimension_names' => [
                'dimension_name' => 'medium',
                'dimension_name' => 'source'
              ]
            ])
          ])
        ])]
      ],
      'metrics' => [new Metric(['name' => 'totalUsers'])],
      'metricAggregations' => MetricAggregation::TOTAL,
      'orderBys' => [new OrderBy([
        'metric' => new MetricOrderBy([
          'metric_name' => 'totalUsers'
        ]),
        'desc' => true
      ])],
      'limit' => 10
    ]);

приводит к:

      Fatal error: Uncaught UnexpectedValueException: Invalid message property: 0 in /...server_path.../vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php:1063 
Stack trace: 
#0 /...server_path.../vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php(79): Google\Protobuf\Internal\Message->mergeFromArray(Array) 
#1 /...server_path.../vendor/google/analytics-data/src/V1beta/Dimension.php(68): Google\Protobuf\Internal\Message->__construct(Array) 
#2 /...server_path.../inc/digital-stats/src/HelloAnalytics.php(159): Google\Analytics\Data\V1beta\Dimension->__construct(Array) 
#3 {main} thrown in /...server_path.../vendor/google/protobuf/src/Google/Protobuf/Internal/Message.php on line 1063

запрос CURL, отправляемый функцией «Попробовать сейчас»:

      curl --request POST \
  'https://analyticsdata.googleapis.com/v1beta/properties/...property_id...:runReport?key=[YOUR_API_KEY]' \
  --header 'Authorization: Bearer [YOUR_ACCESS_TOKEN]' \
  --header 'Accept: application/json' \
  --header 'Content-Type: application/json' \
  --data '{
  "dateRanges":[{
    "startDate":"2021-11-01",
    "endDate":"2021-11-30",
    "name":"November 2021"
  }],
  "dimensions":[{
    "name":"mediumSource",
    "dimensionExpression":{
      "concatenate":{
        "dimensionNames":["medium","source"],
        "delimiter":"/"
      }
    }
  }],
  "metrics":[{
    "name":"totalUsers"
  }],
  "orderBys":[{
    "metric":{
      "metricName":"totalUsers"
    },
    "desc":true
  }],
  "limit":10,
  "metricAggregations":["TOTAL"]
}' \

  --compressed

Я не могу понять, где я ошибаюсь. я пробовал несколько разных имен в 'dimension_names' массив, такой как 'name', 'Dimension_name', 'DimensName', и попробовал его вообще без имени.

0 ответов

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