Получение определенного ProfileId из зарегистрированных учетных записей с помощью GData .NET Analytics API 2.4

В предыдущей записи я выяснил, как получить данные метрик для определенного идентификатора профиля: исключение, возникающее при использовании GData .NET Analytics API

Теперь я хотел бы получить определенный идентификатор профиля, который соответствует зарегистрированному доменному имени в моем списке учетных записей в Google Analytics, это было легко до этого, но после последнего обновления Google до Management/Core Reporting API 3.0 старый канал 2.3 был отключен и связанный с AccountsFeed код не работает должным образом.

1 ответ

Решение

Используя предложение, размещенное здесь: http://code.google.com/p/gdata-issues/issues/detail?can=2&start=0&num=100&q=&colspec=API%20ID%20Type%20Status%20Priority%20Stars%20Summary&groupby=&sort=&id=2955, я придумал этот код, чтобы выполнить то, что мне нужно:

Imports Google
Imports Google.Analytics
Imports Google.GData.Analytics
Imports System.Collections.Generic
Imports System.Collections

Public Function GetProfileId(ByVal DomainText As String) As String

Dim Ids As String = String.Empty
Dim service As GData.Analytics.AnalyticsService = New GData.Analytics.AnalyticsService("MyAnalyticsService")
service.setUserCredentials(username, pass)

//Dim factory As GData.Client.GDataGAuthRequestFactory = CType(service.RequestFactory, GData.Client.GDataGAuthRequestFactory)
//factory.AccountType = "GOOGLE" 
//factory.UseSSL = True
//service.RequestFactory = factory    

Dim aF As DataFeed = service.Query(New DataQuery("https://www.googleapis.com/analytics/v2.4/management/accounts"))
Dim webPropsUrl As String = "" 
For Each o As GData.Client.AtomEntry In aF.Entries
     //webproperties
      If o.Title.Text.Contains(DomainText) Then
           webPropsUrl = o.Links.Item(1).HRef.Content
           Exit For
      End If
Next

Dim wpF As DataFeed = service.Query(New DataQuery(webPropsUrl))
Dim profileFeedUrl As String = "" 
For Each entry As DataEntry In wpF.Entries
    //profiles
     profileFeedUrl = entry.Links.Item(2).HRef.Content
     Exit For
Next

Dim prF As DataFeed = service.Query(New DataQuery(profileFeedUrl))
Dim profileUrl As String = "" 
For Each profd As DataEntry In prF.Entries
     profileUrl = profd.Links.Item(0).HRef.Content
     Exit For
Next

Dim profileId As String = ""
profileId = profileUrl.Split("/")(profileUrl.Split("/").Length - 1)

Return profileId

End Function
Другие вопросы по тегам