1

Google アナリティクス データを抽出して .CSV ファイルに書き込む Windows コンソール アプリケーションを開発しました。Google アナリティクス クエリ エクスプローラーで特定の日付のデータをクエリすると、次のように表示されました:-「クエリは 96782 件の結果に一致しました...」

問題は、アプリケーションを使用して同じ日付のデータを照会すると、デフォルトで 1000 レコードのみが返され、設定したときに

DataResource.GaResource.GetRequest objRequest.MaxResult10k を超えると、最大から最大 10k のレコードが得られます。

10k を超えるレコードを取得する方法はありますか。

4

2 に答える 2

2

だから私がしたことは、Request.MaxResult = 10000 と Response.ItemsPerPage = 10000 を設定することです。重要な役割は、ページネーション メカニズムを持つ Request.StartIndex によって演じられます。たとえば、最初のループでは 1 ~ 10000 行を取得し、次に 10001 ~ 20000 行を取得します。 ...20001-30000 など。

ループの下で、特定の日のデータへのリクエストは、最初に Request.StartIndex = 1 に設定され、行数が 10000 行に達するとすぐに連続して MaxResult + 1 に増加します。例: - Request.StartIndex = 1、10001、20001... .30001...40001 など、Response.Rows == null まで続きます。

これが私のコードです:-

            StringBuilder sbrCSVData = new StringBuilder();
            int intStartIndex = 1;
            int intIndexCnt = 0;
            int intMaxRecords = 10000;

            AnalyticsService objAnaSrv = new AnalyticsService(objInit);
            string metrics = "ga:visitors,ga:visits,ga:visitBounceRate,ga:pageviews,ga:pageviewsPerVisit,ga:uniquePageviews,ga:avgTimeOnPage,ga:exits,ga:avgPageLoadTime,ga:goal1ConversionRate";
            DataResource.GaResource.GetRequest objRequest = objAnaSrv.Data.Ga.Get(strProfId, startDate,endDate, metrics);
            objRequest.Dimensions = "ga:visitCount,ga:browser,ga:browserVersion,ga:IsMobile,ga:screenResolution,ga:date,ga:hour";
            objRequest.MaxResults = 10000;

            while (true)
            {
                objRequest.StartIndex = intStartIndex;
                GaData objResponse = objRequest.Fetch();
                objResponse.ItemsPerPage = intMaxRecords;

                  if (objResponse.Rows != null)
                {
                    intIndexCnt++;
                    for (int intRows = 0; intRows < objResponse.Rows.Count; intRows++)
                    {
                        IList<string> lstRow = objResponse.Rows[intRows];
                        for (int intCols = 0; intCols <= lstRow.Count - 1; intCols++)
                        {
                            strRowData += lstRow[intCols].ToString() + "|";
                        }
                        strRowData = strRowData.Remove(strRowData.Length - 1, 1);
                        sbrCSVData.Append(strRowData + "\r\n");
                        strRowData = "";
                    }
                    intStartIndex = intIndexCnt * intMaxRecords + 1;
                }
                else break;
            }
于 2013-05-30T14:19:52.443 に答える