0

그래프를 만들 수 있도록 사용자가 G Suite 부동산에 로그인 한 횟수에 대한 정보를 가져 오려고합니다. (하지만이 기능은 네이티브이지만 API 호출을 통해 수행하고 싶습니다. 나중에 필요한 다른 데이터가 있습니다.)Google G Suite API PHP 라이브러리로 응답 처리

여기서 멈추지 않는 부분은 응답 처리입니다. 내 코드는 현재 다음과 같습니다

<?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('[email protected]'); 

// 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]); 



    } 
} 

?> 

지금이 다음과 같은 내용을 반환

Number of logins (past 24 hours): 2 

Google_Service_Reports_UsageReportParameters Object ([collection_key:protected] => msgValue [boolValue] => [datetimeValue] => [intValue] => 2 [msgValue] => [name] => accounts:num_1day_logins [stringValue] => [internal_gapi_mappings:protected] => Array () [modelData:protected] => Array () [processed:protected] => Array ()) 

내가 가진 문제는 내가 키 ID에 의해 매개 변수를 호출하여 쓸모없는 것을 발견 한 것입니다 전체 API 결과에 따라 수시로 변경되는 것으로 보입니다. 다음 키 ID를 이용하여 API를 호출하는 코드 :

$data->getparameters()[23]->getintValue()

는 I 키 ID가 상기 전류에서 23로 도시되어 있지만,이 변경 가능한 것을 발견했다. 이런 이유로 나는 내가 필요로하는 데이터의 이름으로 검색하고 결정하기로 결정했다 : $data->getparameters()[23]에 대한 배열을 프린트 할 때 데이터가 리턴되는 형식은 문제가된다.

Google_Service_Reports_UsageReportParameters Object ([collection_key:protected] => msgValue [boolValue] => [datetimeValue] => [intValue] => 2 [msgValue] => [name] => accounts:num_1day_logins [stringValue] => [internal_gapi_mappings:protected] => Array () [modelData:protected] => Array () [processed:protected] => Array ())

은 어떻게 name 검색하고 배열 키를 얻을 것?

나는 $data->getparameters()의 결과를 게시 하겠지만 데이터 개인 정보는 걱정됩니다.

누군가가이 기능을 사용하고 있습니까? 누군가가 도움을 줄 수 있습니까? 더 많은 정보가 필요하시면 알려주십시오.

답변

1

그래, 여기에있는 문제는 반환되는 Google 객체가 그들이 말하는 것처럼 일관성이 없다는 것입니다.

당신은 문을 당신이 필요로하는 개체를 끌어 경우와 다른 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); 

     } 

    } 


    } 
} 

나는 가장 깨끗한 해결책이지만 제대로 작동하지는 않습니다.