通过 Google 分析报告 API 获取 clientId
get clientId through Google analytics reporting API
我注意到在 Dimensions & Metrics Explorer 中,clientId 由 google 分析本身分配以唯一标识设备,无法通过任何方式查询报告 API。有人知道我可能错过的任何其他可能的方式来获取响应正文中的 clientId 吗?
这是我的示例代码
DateRange dateRange = new DateRange();
dateRange.setStartDate("2019-04-20");
dateRange.setEndDate("yesterday");
// Create the Metrics object.
Metric sessions = new Metric()
.setExpression("ga:sessions")
.setAlias("sessions");
Dimension userId = new Dimension().setName("ga:dimension1");
Dimension source = new Dimension().setName("ga:source");
Dimension medium = new Dimension().setName("ga:medium");
Dimension campaign = new Dimension().setName("ga:campaign");
Dimension experimentId = new Dimension().setName("ga:experimentId");
List<String> filterExpressionList = new ArrayList<>();
filterExpressionList.add("426");
filterExpressionList.add("359");
filterExpressionList.add("13694118");
filterExpressionList.add("28");
DimensionFilter userIdFilter = new DimensionFilter();
userIdFilter.setDimensionName("ga:dimension1").setExpressions(filterExpressionList).setCaseSensitive(false).setNot(false).setOperator("IN_LIST");
List<DimensionFilter> dimensionFilterList = new ArrayList<>();
dimensionFilterList.add(userIdFilter);
DimensionFilterClause dimensionFilterClause = new DimensionFilterClause();
dimensionFilterClause.setFilters(dimensionFilterList);
List<DimensionFilterClause> dimensionFilterClauses = new ArrayList<>();
dimensionFilterClauses.add(dimensionFilterClause);
// Create the ReportRequest object.
ReportRequest request = new ReportRequest()
.setViewId(VIEW_ID)
.setDateRanges(Arrays.asList(dateRange))
.setMetrics(Arrays.asList(sessions))
.setDimensions(Arrays.asList(userId,source,medium,campaign,experimentId)).setDimensionFilterClauses(dimensionFilterClauses);
ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
requests.add(request);
// Create the GetReportsRequest object.
GetReportsRequest getReport = new GetReportsRequest()
.setReportRequests(requests);
// Call the batchGet method.
GetReportsResponse response = service.reports().batchGet(getReport).execute();
假设您指的是 google 分析 api 返回的 cid passed to the Google analycs data. The anwser is you cant. This is not a dimension 此维度仅用于内部处理。
您最好的选择是将其添加为自定义维度,并随您提出的每个请求一起发送。
clientId 现在可以通过 API 作为 ga:clientId
获得
无需再在自定义维度中设置 clientId(或 userId)。
任何使用 Universal Analytics 用户 ID 功能的人请注意 ga:clientId 中返回的值实际上是 userId 更有趣。 (截至撰写本文时)如果您从用户 ID 视图请求 clientId,GA 将失败。因此,您应该使用非用户 ID 视图来获取用户 ID。 :)
我注意到在 Dimensions & Metrics Explorer 中,clientId 由 google 分析本身分配以唯一标识设备,无法通过任何方式查询报告 API。有人知道我可能错过的任何其他可能的方式来获取响应正文中的 clientId 吗?
这是我的示例代码
DateRange dateRange = new DateRange();
dateRange.setStartDate("2019-04-20");
dateRange.setEndDate("yesterday");
// Create the Metrics object.
Metric sessions = new Metric()
.setExpression("ga:sessions")
.setAlias("sessions");
Dimension userId = new Dimension().setName("ga:dimension1");
Dimension source = new Dimension().setName("ga:source");
Dimension medium = new Dimension().setName("ga:medium");
Dimension campaign = new Dimension().setName("ga:campaign");
Dimension experimentId = new Dimension().setName("ga:experimentId");
List<String> filterExpressionList = new ArrayList<>();
filterExpressionList.add("426");
filterExpressionList.add("359");
filterExpressionList.add("13694118");
filterExpressionList.add("28");
DimensionFilter userIdFilter = new DimensionFilter();
userIdFilter.setDimensionName("ga:dimension1").setExpressions(filterExpressionList).setCaseSensitive(false).setNot(false).setOperator("IN_LIST");
List<DimensionFilter> dimensionFilterList = new ArrayList<>();
dimensionFilterList.add(userIdFilter);
DimensionFilterClause dimensionFilterClause = new DimensionFilterClause();
dimensionFilterClause.setFilters(dimensionFilterList);
List<DimensionFilterClause> dimensionFilterClauses = new ArrayList<>();
dimensionFilterClauses.add(dimensionFilterClause);
// Create the ReportRequest object.
ReportRequest request = new ReportRequest()
.setViewId(VIEW_ID)
.setDateRanges(Arrays.asList(dateRange))
.setMetrics(Arrays.asList(sessions))
.setDimensions(Arrays.asList(userId,source,medium,campaign,experimentId)).setDimensionFilterClauses(dimensionFilterClauses);
ArrayList<ReportRequest> requests = new ArrayList<ReportRequest>();
requests.add(request);
// Create the GetReportsRequest object.
GetReportsRequest getReport = new GetReportsRequest()
.setReportRequests(requests);
// Call the batchGet method.
GetReportsResponse response = service.reports().batchGet(getReport).execute();
假设您指的是 google 分析 api 返回的 cid passed to the Google analycs data. The anwser is you cant. This is not a dimension 此维度仅用于内部处理。
您最好的选择是将其添加为自定义维度,并随您提出的每个请求一起发送。
clientId 现在可以通过 API 作为 ga:clientId
获得无需再在自定义维度中设置 clientId(或 userId)。
任何使用 Universal Analytics 用户 ID 功能的人请注意 ga:clientId 中返回的值实际上是 userId 更有趣。 (截至撰写本文时)如果您从用户 ID 视图请求 clientId,GA 将失败。因此,您应该使用非用户 ID 视图来获取用户 ID。 :)