2

Google Analytics의 API는 초보자입니다. Analytic의 계정이 1 개 이상 있고 각 계정마다 다른 웹 속성이 있습니다. 이제 내가하려는 것은 계정에 따라 웹 속성 목록을 변경하는 것입니다. 그래서 웹 속성을 표시하지만, 드롭 다운 목록에서 계정의 변화에 ​​웹 속성을 변경해야하고 내가 할 수있는 방법을 알아낼 수 없습니다 계정 목록 및 두 번째 드롭 다운을 표시 한 드롭 다운을해야 함Google Analytics API는 계정에 따라 웹 속성을 변경합니다.

코드 :

try { 
    global $_params, $output_title, $output_body; 
    $output_title = 'Adwords'; 
    $output_nav = '<li><a href="'.$scriptUri.'?logout">Logout</a></li>'."\n"; 
    $output_body = '<h1>Google Adwords Access demo</h1> 
        <p>The following domains are in your Google Adwords account</p><select>'; 
        $accountToPropertyMap = array();    
    $accounts = $service->management_accounts->listManagementAccounts("~all"); 
    foreach($accounts['items'] as $item) { 
    $id = $item->getId(); 
$output_body .= sprintf('<option value="">%1$s</option>', $item['name']); 
    } 
    $output_body .= '</select>'; 

$output_prop ='<h1>web properties</h1><select>'; 
$service->management_webproperties->listManagementWebproperties($id); 
    $accountToPropertyMap = $service->management_webproperties->listManagementWebproperties($id); 
    foreach($webproperties['items'] as $item) { 
     $output_prop .= sprintf('<option>%1$s</option>', $item['name']); 
    } 
    $output_prop .= '</select>'; 
    include("output.php"); 
} catch (Exception $e) { 
    die('<html><body><h1>An error occured: ' . $e->getMessage()."\n </h1></body></html>"); 
} 

답변

1

listManagementWebproperties("~all")을 호출하면 ALL the accounts that user has access to가 반환됩니다.

당신이 listManagementWebproperties(accountid).

로 전처리에서이 작업을 수행 할 수있는 방법을 해당 계정의 ID를 전달해야 선택한 계정 만 웹 속성을 표시하려면

는 각 계정이 호출을하고 이러한 그룹을 저장하는 것입니다 속성을 별도로 표시 한 다음 필요에 따라 표시 할 수 있습니다.

계정을 선택하고 계정 ID = {$ account-> getId()}를 사용하여 ID를 가져온 다음 속성 호출에 사용할 수 있습니다.

예 니펫 :

$accountToPropertyMap = array(); 
$accounts = $service->management_accounts->listManagementAccounts("~all"); 
foreach($accounts as $account){ 
    $id = $account->getId(); 
    $service->management_webproperties->listManagementWebproperties($id) 
    $accountToPropertyMap[$id] = management_webproperties->listManagementWebproperties($id); 
} 

나서 어레이로부터 속성을 검색한다. 필요에 따라 응용 프로그램의 ID보다 더 중요한 키를 사용할 수 있습니다.

+0

나는 동적 인 방법으로해야한다고 생각합니다. 네가 나에게 말했던 방식은 하나의 계정에서만 사용할 수있다. 그래서 만약 다른 사람이 내 응용 프로그램을 사용하려고하면 어떻게됩니까 ?? 여기에 내 요점을 이해하시기 바랍니다. –

+0

클라이언트를 기반으로 계정 정보가 올바르게 표시됩니까? accountIds를 하드 코드하지 말고 쿼리 한 계정에서 가져옵니다. 계정을 선택하고'Account ID = {$ account-> getId()}'를 사용하여 ID를 얻으십시오. 그런 다음 속성에 대한 호출에 넣습니다. – theannouncer

+0

나는 당신이 지금 제안한 것보다 먼저 이것을 시도했다. 하지만 불행히도 나는 결과가 잘못되었을 수 있습니다. 그래서 위의 코드를 사용하여 여러분의 제안을 보여줄 수 있습니다. –

관련 문제