在Google Analytics Javascript API上查询多个ID

时间:2014-10-15 18:14:28

标签: google-analytics google-api google-analytics-api

我正在使用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

3 个答案:

答案 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>