我正在使用Google Analytic的API for javascript。
我正在对用户的数据范围计数执行查询,并将视图ID传递给查询:
gapi.client.analytics.data.ga.get({
'ids': 'ga:XXXXXXXX',
'start-date': '2014-10-01',
'end-date': '2014-10-15',
'metrics': 'ga:users'
}).execute(function (results) {
if (results.rows && results.rows.length)
console.log(results.rows[0][0]);
});
但是,由于我正在处理使用配额,我需要查询多个视图。
有没有办法在同一个查询中为多个ID请求报告?
类似的东西:
gapi.client.analytics.data.ga.get({
'ids': 'ga:XXXXXXXX, ga:XXXXXXXXX, ga:XXXXXXXXXX', //Which obviously doesn't work
答案 0 :(得分:3)
答案:否则无法请求多个个人资料ID
Google Analtyics Reporting API reference
IDS = GA:12345 表单ga:XXXX的唯一表格ID,其中XXXX是Google Analytics view(profile)查询将为其检索数据的ID。
即使它被称为IDS并不意味着你可以发送更多的IDS。你不能一次只发一个。这是您必须多次运行您的请求的独特价值。如果您考虑这一点,这是有道理的,因为您将要回复的数据会在不同的配置文件ID之间混淆,您将无法分辨数据来自哪个配置文件,因为配置文件不是维度。
答案 1 :(得分:0)
是的,根据GA Core Reporting API文档,您一次只能查询一个视图ID(在同一查询中)。
但是,您可能决定在运行查询时选择一些编程语言脚本并遍历多个View ID 。这就是我使用R语言和一个名为RGoogleAnalytics的包(它允许连接到GA API)所做的。运行 for循环允许我从多个View ID中检索数据并将其存储在同一数据集中。这是一篇解释如何在R:http://goo.gl/ppnj8Y
中执行此操作的帖子请告诉我这是否有任何帮助。
答案 2 :(得分:0)
这个答案可能有点晚了,但是我想为那些有类似用例的人提供帮助。借助Google Analytics(分析)Reporting API V4,我找到了一种方法,同时还能在可能有数百行的表格中提取3个独立日期范围的信息。
您可以在field metrics下添加别名。这是我传递View ID和解析JSON响应所需的Date范围信息的地方。
以下内容基于Google's Hello Analytics示例-可能有更好的方法来执行此操作,但这目前满足了我的需求。
我在下面列出了表格的结构以及可正常运行的javascript。表格是按照这种方式设置的,因此我也可以使用list.j进行排序。
var VIEW_ID = ''
function runReport() {
//tbody has id gReport and I want to loop through each row
$("#gReport tr").each(function() {
//VIEW_ID is pulled from the table data
VIEW_ID = $(this).find('.view').html();
// Run the function with the set time frames along with a td I need to manipulate
queryReports('30daysAgo', '.thirty')
queryReports('7daysAgo', '.seven')
queryReports('yesterday', '.one')
});
};
function queryReports(startDate, tdClass) {
return gapi.client.request ({
path: '/v4/reports:batchGet',
root: 'https://analyticsreporting.googleapis.com/',
method: 'POST',
body: {
reportRequests: [
{
viewId: VIEW_ID,
dateRanges: [
{
startDate: startDate,
endDate: 'today'
}
],
metrics: [
{
expression: 'ga:sessions',
alias: VIEW_ID + ":" + tdClass
}
]
}
]
}
}).then(displayResults, console.error.bind(console));
}
function displayResults(response) {
// find the alias string in JSON
i = response.result.reports[0].columnHeader.metricHeader.metricHeaderEntries[0].name
// manipulate string so I have variables to update on the table
c = i.split(":").pop();
u = i.split(":").shift();
// return value given to me by google
countValue = response.result.reports[0].data.totals[0].values[0]
// find specific td of the row that contains the profile id and the time class I want to manage
$("tr:contains('" + u + "')").find(c).html(countValue);
}
<!--- table row setup - I also have a tbody with the ID gReport -->
<tr>
<td class="site"><a href="https://"></a></td>
<td class="proj"><a href=""></a></td>
<td class="ga"></td>
<td class="view"></td>
<td class="thirty"></td>
<td class="seven"></td>
<td class="one"></td>
<td class="notes"></td>
</tr>