在Google Analytics Javascript API上查询多个ID



我使用Google Analytical的API编写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

答案:不,没有办法请求一个以上的配置文件id

谷歌分析报告API参考

ids=ga:1245表单ga:XXXX的唯一表ID,其中XXXX是分析视图(配置文件)ID,查询将为其检索数据。

即使它被称为IDS,也不意味着你可以发送不止一个。你不能一次只能发送一个。这是一个独特的值,您将不得不多次运行您的请求。如果你仔细想想,这是有道理的,因为你将要返回的数据会在不同的配置文件id之间混合,你将无法判断数据来自哪个配置文件,因为配置文件不是一个维度。

这个答案可能有点晚,但我想帮助那些可能有类似用例的人。通过Google Analytics Reporting API V4,我找到了一种方法来做到这一点,同时还在一个可能有数百行的表上提取3个独立日期范围的信息。

在字段度量下,您可以添加别名。这里是我传递视图ID和日期范围信息的地方,我需要这些信息来解析JSON响应。

以下是基于谷歌的Hello Analytics示例-可能有更好的方法来做到这一点,但这满足了我目前的需求。

我在下面列出了该表的结构方式以及正在运行的javascript。表是这样设置的,所以我也可以使用list.js进行排序。

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>

是的,根据GA Core Reporting API文档,您一次只能查询一个视图ID(在同一查询中)。

但是,您可能会决定选择一些编程语言脚本,并在运行查询时遍历多个视图ID。这就是我使用R语言和名为RGoogleAnalytics的包(允许连接到GAneneneba API)所做的。运行for循环允许我从多个视图ID中检索数据并将其存储在同一数据集中。以下是一篇文章,解释如何在R中做到这一点:http://www.analyticsforfun.com/2015/05/query-multiple-google-analytics-view.html

相关内容

  • 没有找到相关文章

最新更新