2

Google の分析データにアクセスしたいので、Google データ API SDK からサンプルを入手しました。しかし、これらのコーディングは機能せず、例外がスローされます

リクエストの実行に失敗しました: https://www.google.com/analytics/feeds/accounts/default

これの理由は、Googleがv3.0に更新したことです。C# の更新されたコーディングを検索しましたが、これに対する解決策が見つかりませんでした。

私はこれと同じ問題を抱えていますが、C#で. GData .NET Analytics API の使用時にスローされる例外

Google開発者で言うように、次のように変更してコーディングしてみました - https://developers.google.com/analytics/resources/articles/gdata-migration-guide#appendix_a

string userName = this.Username.Text;
string passWord = this.Password.Text;

AnalyticsService service = new AnalyticsService("AnalyticsSampleApp");
service.setUserCredentials(userName, passWord);
string googleAccountWebId = "AIXXXXXXXXXXXXXXXXXXXXXXXXXXX";
string profileFeedUrl = "https://www.googleapis.com/analytics/v2.4/data?key=" + googleAccountWebId;

DataQuery query2 = new DataQuery(profileFeedUrl);
query2.Ids = "12345678";
query2.Metrics = "ga:visits";
query2.Sort = "ga:visits";
query2.GAStartDate = DateTime.Now.AddMonths(-1).AddDays(-2).ToString("2011-08-01");
query2.GAEndDate = DateTime.Now.ToString("2013-09-01");
query2.StartIndex = 1;


DataFeed data = service.Query(query2);


foreach (DataEntry entry in data.Entries)
{
    string st=entry.Metrics[0].Value;       
}

しかし、これを変更しても例外がスローされます

DataFeed data = service.Query(query2);

この行。例外は次のとおりです。

リクエストの実行に失敗しました: https://www.googleapis.com/analytics/v2.4/data?key=AIXXXXXXXXXXXXXXXXXXXXXX-8&start-index=1&end-date=2013-09-01&ids=12345678&metrics=ga:visits&sort=ga:visits&start -日付=2011-08-01

私は次のDLLを使用しています

Google.GData.Analytics.dll
Google.GData.Client.dll
Google.GData.Extensions.dll

私の質問:

  1. このエラーを修正するにはどうすればよいですか?

  2. Google の分析データにアクセスするにはどうすればよいですか? これは正しいです?またはそれを行う方法は何ですか?? たとえば、利用可能な ProfileId とその値を取得したいと考えています。(タイトルとページビュー)

4

1 に答える 1

8

アナリティクス アカウント:

アナリティクス アカウントを作成していない場合は、すでにアナリティクス アカウントをお持ちであると想定しており、こちらでドメインにサインアップしてください: http://www.google.com/intl/en/analytics/

API キーを取得するには、次のようにします。

https://developers.google.com/analytics/resources/articles/gdata-migration-guide (Google API コンソールでプロジェクトを作成する)の指示に従って、クエリ文字列の一部として設定したら、キーを生成します。 Google アナリティクス サービスにリクエストします。この場合: YourAPIkEStringabcdefghijklmno

profileId (コード上の ID) を取得するには、次のようにする必要があります。

分析アカウントにログインし、リスト (青いリンク) で目的のドメインを選択します。管理者ボタンをクリックし、プロファイル タブでプロファイル構成サブタブを見つけます。この場合、8 文字の長さの ID であるプロファイル ID がすぐそこにあります。 12345678

ここに、その ID の訪問数を取得するのに役立つ C# コードがあります。

public string VisitsNumber() 
    {
        string visits = string.Empty;
        string username = "youremailuser@domain.com";
        string pass = "yourpassword";
        string gkey = "?key=YourAPIkEYYourAPIkEYYourAPIkEYYourAPIkE";

    string dataFeedUrl = "https://www.google.com/analytics/feeds/data" + gkey;
    string accountFeedUrl = "https://www.googleapis.com/analytics/v2.4/management/accounts" + gkey;

    AnalyticsService service = new AnalyticsService("WebApp");
    service.setUserCredentials(username, pass);

    DataQuery query1 = new DataQuery(dataFeedUrl);

    query1.Ids = "ga:12345678";
    query1.Metrics = "ga:visits";
    query1.Sort = "ga:visits";

    //You were setting 2013-09-01 and thats an invalid date because it hasn't been reached yet, be sure you set valid dates
    //For start date is better to place an aprox date when you registered the domain on Google Analytics for example January 2nd 2012, for an end date the actual date is enough, no need to go further
    query1.GAStartDate = new DateTime(2012, 1, 2).ToString("yyyy-MM-dd"); 
    query1.GAEndDate = DateTime.Now.ToString("yyyy-MM-dd");
    query1.StartIndex = 1;        

    DataFeed dataFeedVisits = service.Query(query1);

    foreach (DataEntry entry in dataFeedVisits.Entries)
    {
        string st = entry.Title.Text;
        string ss = entry.Metrics[0].Value;
        visits = ss;
    }

    return visits;
}

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack) 
    {
        Response.Write("Visits:" + this.VisitsNumber());
    }
}

2.4 API はもはやそれほど柔軟ではないため、プロファイル ID を取得するためにそれをハッキングする別の記事をここに 用意しました。 Telerik コンバーター: http://converter.telerik.com/

2.4 API を使用するにはこれで十分だと思います。さらにサポートが必要な場合はお知らせください。

于 2012-09-24T22:35:48.923 に答える