使用Google G Suite API PHP库处理响应
我正在尝试提取我们的用户登录到我们的G套件房地产的次数信息,以便创建一个图表。我知道这个功能是本机的,但是我希望通过API调用来实现,因为我们以后还需要其他数据 我陷入困境的是如何处理回应。我的代码当前如下所示:使用Google G Suite API PHP库处理响应,php,arrays,google-api-php-client,google-api-client,google-client,Php,Arrays,Google Api Php Client,Google Api Client,Google Client,我正在尝试提取我们的用户登录到我们的G套件房地产的次数信息,以便创建一个图表。我知道这个功能是本机的,但是我希望通过API调用来实现,因为我们以后还需要其他数据 我陷入困境的是如何处理回应。我的代码当前如下所示: <?php require_once __DIR__ . '/vendor/autoload.php'; putenv('GOOGLE_APPLICATION_CREDENTIALS=credentials.json'); define('SCOPES', implode('
<?php
require_once __DIR__ . '/vendor/autoload.php';
putenv('GOOGLE_APPLICATION_CREDENTIALS=credentials.json');
define('SCOPES', implode(' ', array(
Google_Service_Reports::ADMIN_REPORTS_USAGE_READONLY,
Google_Service_Reports::ADMIN_REPORTS_AUDIT_READONLY)
));
$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes(SCOPES);
$client->setAccessType('offline');
$client->setSubject('administrator@mydomain.com');
// Get the API client and construct the service object.
$service = new Google_Service_Reports($client);
// API CALL
$date = '2017-01-19';
$optParams = array(
);
$results = $service->customerUsageReports->get(
$date, $optParams);
if (count($results->getusageReports()) == 0) {
print "No logins found.\n";
} else {
foreach ($results->getusageReports() as $data) {
print("Number of logins (past 24 hours): " . $data->getparameters()[23]->getintValue() . "<br />");
echo "<br />";
// Use this for checking array values
print_r($data->getparameters()[23]);
}
}
?>
我的问题是,我发现通过键ID调用参数是没有用的,因为它似乎会根据完整的API结果不时地改变。使用密钥ID调用api的代码如下:
$data->getparameters[23]->getintValue
我发现,尽管上面的密钥ID当前显示为23,但这可能会改变。出于这个原因,我决定尝试按所需数据的名称进行搜索,即:accounts:num\u 1day\u logins
问题在于返回数据的格式,当我打印$data->getparameters[23]的数组时,我得到以下结果:
Google_Service_Reports_UsageReportParameters Object[collection\u key:protected]=>msgValue[boolValue]=>[datetimeValue]=>[intValue]=>2[msgValue]=>[name]=>accounts:num_1day\u logins[stringValue]=>[internal\u gapi\u mappings:protected]=>Array[modelData:protected]=>Array[processed:protected]=>Array[processed:protected]=>Array
如何搜索名称并获取数组键
我会发布:$data->getparameters的结果,但是我担心数据隐私
有人用过这个吗?请有人帮忙。如果需要更多信息,请告诉我。好的,这里的问题是,返回的谷歌对象没有他们想告诉你的那么一致 您需要使用if语句执行另一个foreach循环来提取所需的对象。基本上,它返回一个包含多个对象的对象,我们希望按名称提取特定对象 下面的代码应该可以做到这一点,您可以看到我添加了一个额外的foreach循环来循环父对象中的对象,if语句确保我们只处理我们想要的对象
if (count($results->getusageReports()) == 0) {
print "No logins found.\n";
} else {
foreach ($results->getusageReports() as $data) {
foreach ($data->getparameters() as $pizza) {
if ($pizza->name == "accounts:num_1day_logins"){
var_dump ($pizza);
}
}
}
}
我不能保证这是最干净的解决方案,但应该有效
if (count($results->getusageReports()) == 0) {
print "No logins found.\n";
} else {
foreach ($results->getusageReports() as $data) {
foreach ($data->getparameters() as $pizza) {
if ($pizza->name == "accounts:num_1day_logins"){
var_dump ($pizza);
}
}
}
}