2011-03-21 231 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”

相关问题