Google Analytics API (PHP) извлекает данные из второго свойства

Для определенного веб-сайта в моем аккаунте Google Analytics для одного веб-сайта зарегистрированы два свойства. Не знаю, кто это настроил первым, но сейчас у первого есть данные, скажем, с 2010 по 2012 год, а у второго — 2013 год. Я хочу получить доступ ко второму свойству. Вот как выглядит страница отчета (имена размазаны):

введите описание изображения здесь

Следуя официальному руководству по PHP, я могу получить доступ к первой учетной записи и отобразить ее общее количество сеансов. Но я не могу получить доступ ко второму аккаунту. Я думал, что я бы изменил следующую функцию:

function getFirstprofileId(&$analytics) {

$index = 0;
$accounts = $analytics->management_accounts->listManagementAccounts();

echo "<pre>";
print_r($accounts);
echo "</pre>";

if (count($accounts->getItems()) > 0) {
$items = $accounts->getItems();
$firstAccountId = $items[$index]->getId();

$webproperties = $analytics->management_webproperties
->listManagementWebproperties($firstAccountId);

if (count($webproperties->getItems()) > 0) {
$items = $webproperties->getItems();
$firstWebpropertyId = $items[$index]->getId();

$profiles = $analytics->management_profiles
->listManagementProfiles($firstAccountId, $firstWebpropertyId);

if (count($profiles->getItems()) > 0) {
$items = $profiles->getItems();
return $items[$index]->getId();

} else {
throw new Exception('No views (profiles) found for this user.');
}
} else {
throw new Exception('No webproperties found for this user.');
}
} else {
throw new Exception('No accounts found for this user.');
}
}

$index = 0; то, что вы видите, это то, что я сделал, думая, что, просто изменив $ index на 1 или что-то, я смогу получить доступ к следующему свойству, но это выдает мне сообщение об ошибке Call to a member function getId() on a non-object по коду $firstAccountId = $items[$index]->getId();

Любая помощь будет оценена.

1

Решение

Вероятно, проблема, с которой вы столкнулись, связана с тем, что вы используете старый учебник. Который использует Oauth2 и старый PHP-клиент lib. Поскольку вы пытаетесь получить доступ только к своим собственным данным, я рекомендую вам использовать служебную учетную запись.

Текущую библиотеку PHP-клиента можно найти на github: Google-апи-PHP-клиент

Ниже приведен код из моего руководства по использованию служебной учетной записи с php для доступа к данным Google Analytics.

session_start();
require_once 'Google/Client.php';
require_once 'Google/Service/Analytics.php';
/************************************************
The following 3 values an befound in the setting
for the application you created on Google
Developers console.         Developers console.
The Key file should be placed in a location
that is not accessable from the web. outside of
web root.       web root.

In order to access your GA account you must
Add the Email address as a user at the
ACCOUNT Level in the GA admin.
************************************************/
$client_id = '1046123799103-nk421gjc2v8mlr2qnmmqaak04ntb1dbp.apps.googleusercontent.com';
$Email_address = '1046123799103-nk421gjc2v8mlr2qnmmqaak04ntb1dbp@developer.gserviceaccount.com';
$key_file_location = '629751513db09cd21a941399389f33e5abd633c9-privatekey.p12';
$client = new Google_Client();
$client->setApplicationName("Client_Library_Examples");
$key = file_get_contents($key_file_location);
// seproate additional scopes with a comma
$scopes ="https://www.googleapis.com/auth/analytics.readonly";
$cred = new Google_Auth_AssertionCredentials(
$Email_address,
array($scopes),
$key
);
$client->setAssertionCredentials($cred);
if($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$service = new Google_Service_Analytics($client);
$accounts = $service->management_accountSummaries->listManagementAccountSummaries();
//calulating start date
$date = new DateTime(date("Y-m-d"));
$date->sub(new DateInterval('P10D'));
//Adding Dimensions
$params = array('dimensions' => 'ga:userType');
// requesting the data
$data = $service->data_ga->get("ga:78110423", $date->format('Y-m-d'), date("Y-m-d"), "ga:users,ga:sessions", $params );
?><html>
<?php echo $date->format('Y-m-d') . " - ".date("Y-m-d"). "\n";?>
<table>
<tr>
<?php
//Printing column headers
foreach($data->getColumnHeaders() as $header){
print "<td>".$header['name']."</td>";
}
?>
</tr>
<?php
//printing each row.
foreach ($data->getRows() as $row) {
print "<tr><td>".$row[0]."</td><td>".$row[1]."</td><td>".$row[2]."</td></tr>";
}
//printing the total number of rows
?>
<tr><td colspan="2">Rows Returned <?php print $data->getTotalResults();?> </td></tr>
</table>
</html>

Убедитесь, что вы даете service account email address доступ на Account уровень в Google Analytics.

Код извлечен из учебника: Учетная запись Google Service PHP

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]