Analytics API和PHP - 以不同格式获取报告

The following code returns an object of Google_Service_AnalyticsReporting_GetReportsResponse

$body = new Google_Service_AnalyticsReporting_GetReportsRequest();
$body->setReportRequests($aRequests);
return $this->oAnalytics->reports->batchGet($body);

I'm wondering if I can get Reports in a different format, example: Array(Dimension,value)

Yes.

The Google Reporting v4 SDK for PHP looks like it has been automatically converted from java code, right along with all the usual object overkill.

To convert to an array, assuming you asked for one dimension and some metrics:

$data = []
foreach ($this->oAnalytics->reports->batchGet($body)->getReports()[0]->getData()->getRows() as $row) {
  $key = $row->dimensions[0]; // chose a unique value or dimension that works for your app, or remove and use $data[] = $value; below
  $values = array_merge($row->metrics, $row->dimensions);    
  $data[$key] = $value;
}
$client = new \Google_Client();
$cred = new \Google_Auth_AssertionCredentials(
            $serviceAccountEmail,
            array(\Google_Service_Analytics::ANALYTICS_READONLY),
            $key
        );
$client->setAssertionCredentials($cred);

if ($client->getAuth()->isAccessTokenExpired()) {
            $client->getAuth()->refreshTokenWithAssertion($cred);
}
$analytics = new \Google_Service_Analytics($client);
$row = $analytics->data_ga->get(
                    'ga:' . $profileId,
                    $startdate,
                    $enddate,
                    $metrics,
                    array(
                        'dimensions'  => $dimension,
                        'sort'        => $metrics,
                        'max-results' => 20,
                    )
                );

This done the job for me.

$row gives something like follows

array(5 items)
   0 => array(2 items)
      0 => 'India' (5 chars)
      1 => '1' (1 chars)
   1 => array(2 items)
      0 => 'Taiwan' (6 chars)
      1 => '1' (1 chars)
   2 => array(2 items)
      0 => 'United States' (13 chars)
      1 => '1' (1 chars)
   3 => array(2 items)
      0 => '(not set)' (9 chars)
      1 => '4' (1 chars)
   4 => array(2 items)
      0 => 'United Kingdom' (14 chars)
      1 => '82' (2 chars)