2011-03-21 60 views
4

我使用Google API獲取Google分析數據。爲了獲得分析,我需要提供配置文件Id,它看起來像「ga:12345678」。如何從跟蹤代碼中獲取Google個人資料ID?

問題是用戶可能有許多配置文件。是否有可能從Google跟蹤代碼中找出配置文件ID(例如,如果我知道跟蹤ID看起來像「UA-1234567-1」)? 它們是否相互關聯?

感謝

回答

0

你想獲得什麼叫做tableId。跟蹤代碼中使用的ID稱爲webPropertyId。可以爲每個網絡媒體資源創建多個配置文件,並使用唯一tableId's

您可以從該tableId「Analytics設置>配置文件設置」中GA(在型材一個按「編輯」)的屏幕。然後選擇「配置文件ID」字段並將其附加到「ga:」。您也可以下載帳戶詳細信息,包括配置文件數據,使用帳戶供稿:http://code.google.com/intl/en/apis/analytics/docs/gdata/gdataReferenceAccountFeed.html

+1

感謝您的回覆,抱歉,如果我的問題不明確,我們正在構建一項服務,允許用戶通過我們的網站訪問他們的GA。事實是,用戶可以擁有很多分析配置文件,但我們不希望讓他們通過我們的系統訪問所有配置文件,只有一個,特別是我們不希望他們手動輸入配置文件ID。所以我問是否可以從我們可以訪問的跟蹤ID中獲取個人資料ID?我使用'Gdata'獲得GA,我可以得到他們的配置文件列表,但不知道要獲取哪些數據。謝謝 – Burjua 2011-03-21 17:54:14

+0

我也有這個問題,試試https://developers.google.com/analytics/solutions/google-analytics-super-proxy,如果有效,我會告訴你@Burja – PauAI 2015-10-20 02:40:03

1

可以編程得到使用管理API(下面的鏈接)存在一個給定WebPropertyId(UA碼)的配置文件。

HTTP調用你的決定將是這樣的:

https://www.google.com/analytics/feeds/datasources/ga/accounts/[accountID]/webproperties/[webPropertyID]/profiles 

accountIDwebPropertyID要麼被設爲您有興趣或~all的具體數值帶回一切當前用戶訪問。

如果按照約定,您不會在Web屬性下創建多個配置文件,那麼對於給定的WebPropertyId,只會返回默認配置文件,這意味着您將獲得WebPropertyId到配置文件ID的一對一映射。這將允許您從WebPropertyId查找配置文件ID。

看到這裏獲取更多信息的管理API文檔:http://code.google.com/apis/analytics/docs/mgmt/mgmtFeedReference.html

1

我剛做完發現在Java中通過跟蹤代碼的配置文件ID的這個任務。關鍵是,跟蹤代碼用作網絡媒體資源ID,而且該配置文件通過內部網絡媒體資源ID與網絡媒體資源相關聯。因此,步驟如下:

  1. 在Google開發者控制檯中,設置服務帳戶客戶端ID以獲取客戶端電子郵件地址,客戶端ID和p12文件。下載p12並放到您的服務器上。
  2. 授權您的谷歌Analytics(分析)與客戶端ID和P12文件帳戶獲得分析對象
  3. 與分析對象,你可以獲取所有的網絡媒體資源的對象,請使用您的跟蹤代碼的網絡媒體資源ID選擇屬性,並得到其內部的網絡媒體資源ID
  4. 與分析對象,遍歷所有配置文件對象中,選擇如從步驟得到具有內部網頁內容ID相同的型材2

的完整代碼如下,所述getProfileId()方法將返回你想要的檔案ID:

import java.io.File; 
import java.util.Arrays; 

import org.apache.commons.lang.StringUtils; 

import com.google.api.client.googleapis.auth.oauth2.GoogleCredential; 
import com.google.api.client.http.HttpTransport; 
import com.google.api.client.http.javanet.NetHttpTransport; 
import com.google.api.client.json.JsonFactory; 
import com.google.api.client.json.jackson2.JacksonFactory; 
import com.google.api.services.analytics.Analytics; 
import com.google.api.services.analytics.AnalyticsScopes; 
import com.google.api.services.analytics.model.Profile; 
import com.google.api.services.analytics.model.Profiles; 
import com.google.api.services.analytics.model.Webproperties; 
import com.google.api.services.analytics.model.Webproperty; 

public class AnalyticsUtils { 

    public static final String APP_NAME = "<YOUR APP NAME>"; 
    public static final String CLIENT_ID = "<YOUR CLIENT ID>"; 
    public static final String CLIENT_EMAIL = "<YOUR CLIENT EMAIL>"; 
    public static final String PATH_TO_P12= "<PATH TO YOUR P12 FILE>"; 
    public static final String TRACKING_ID="<YOUR TRACKING CODE>"; 

    public static Analytics initializeAnalytics() throws Exception { 

     final HttpTransport HTTP_TRANSPORT = new NetHttpTransport(); 

     final JsonFactory JSON_FACTORY = new JacksonFactory(); 

     GoogleCredential credential = new GoogleCredential.Builder() 
       .setTransport(HTTP_TRANSPORT) 
       .setJsonFactory(JSON_FACTORY) 
       .setServiceAccountId(CLIENT_EMAIL) 
       .setServiceAccountPrivateKeyFromP12File(new File(PATH_TO_P12)) 
       .setServiceAccountScopes(
         Arrays.asList(AnalyticsScopes.ANALYTICS_READONLY)) 
       .build(); 

     Analytics analytics = new Analytics.Builder(HTTP_TRANSPORT, 
       JSON_FACTORY, credential).setApplicationName(APP_NAME).build(); 

     return analytics; 
    } 

    public static String getProfileId(Analytics analytics) throws Exception { 
     Webproperties webproperties = analytics.management().webproperties().list("~all").execute(); 
     String internalPropertyId = StringUtils.EMPTY; 

     for (Webproperty webproperty: webproperties.getItems()) { 
      if (TRACKING_ID.equalsIgnoreCase(webproperty.getId())) { 
       internalPropertyId = webproperty.getInternalWebPropertyId(); 
       break; 
      } 
     } 

     Profiles profiles = analytics.management().profiles() 
       .list("~all", "~all").execute(); 

     for (Profile profile: profiles.getItems()) { 
      if (internalPropertyId.equalsIgnoreCase(profile.getInternalWebPropertyId())) { 
       return profile.getId(); 
      } 
     } 

     return StringUtils.EMPTY; 
    } 

} 
0

我用Perl做了這個。

這是網址get request

my $ url = qq~https://www.googleapis.com/analytics/v3/management/accounts/ACCOUNTID/webproperties/WEBPROPERTYID/profiles?key=APIKEY~; 

使用本urlToken產生的數據在那裏你會找到ga id

希望這有助於。

2

我有同樣的問題,我找到了最簡單的方法來獲得谷歌分析配置文件ID。

登錄到谷歌Analytics(分析)

1.訪問您的網站的資料(轉至信息中心)

2.您的網址應該會像:

https://www.google.com/analytics/web/#report/visitors-overview/a1234b23478970p987654/ 

/a1234b23478970p 987654/

最後一部分,在「p」之後是您的Google Analytics配置文件ID,在這種情況下(這是假帳戶),它是「987654」

相關問題