Java 通过谷歌分析报告API获取clientId
我注意到,在中,google analytics本身分配的唯一标识设备的clientId无法通过任何报告API进行查询。有人知道我可能错过的任何其他可能的方式吗,让客户ID进入响应体 这是我的示例代码Java 通过谷歌分析报告API获取clientId,java,google-api,google-analytics-api,google-api-java-client,Java,Google Api,Google Analytics Api,Google Api Java Client,我注意到,在中,google analytics本身分配的唯一标识设备的clientId无法通过任何报告API进行查询。有人知道我可能错过的任何其他可能的方式吗,让客户ID进入响应体 这是我的示例代码 DateRange dateRange = new DateRange(); dateRange.setStartDate("2019-04-20"); dateRange.setEndDate("yesterday"); // Create the Metrics object. Met
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 Analytics的数据。问题是你不能。这不是google analytics api返回的维度。此维度仅用于内部处理
您最好的选择是将其添加为自定义维度,并随您的每个请求一起发送。clientId现在可以通过API作为ga:clientId提供 不再需要在自定义维度中设置clientId或userId
请注意,任何使用Universal Analytics用户ID功能的人,ga中返回的值:clientId实际上是更有趣的用户ID。在编写时,如果您从用户ID视图请求clientId,GA将失败。因此,您应该使用非用户ID视图来获取用户ID。:请编辑您的问题并包含您的代码。@DaImTo:附上一个示例code@DalmTo非常感谢。我也是这么想的很抱歉在这里问你。。。我可以查询和过滤我在事件跟踪中设置的自定义变量吗?谢谢回复@Michael Frost Billing。但想知道为什么它没有列在这里,维度和度量资源管理器: