15

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)

Nick
  • 2,951
  • 2
  • 24
  • 47

2 Answers2

6

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;
}
cmc
  • 3,877
  • 2
  • 32
  • 32
  • 1
    Admitting to a bit of necrophilia, this post was the only google search result for the Google API PHP SDK's insane class names. – cmc Jun 24 '16 at 12:54
1
$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)
Ricky Mathew
  • 682
  • 7
  • 12