Google AnalyticsAPI第4版中的POST与GET请求差异

时间:2016-06-28 04:38:18

标签: google-analytics-api

Google Analytics v4 API现在使用POST请求而不是GET请求。并且还没有好的javascript示例可供我遵循。我得到空对象Object {},但我确信数据存在且ViewID正确!

关于我做错的任何建议?或者我可以遵循任何完全有效的例子吗?感谢。

requestData = function () {
var url = "https://analyticsreporting.googleapis.com/v4/reports:batchGet?";

var params = {
    "reportRequests":[{
        "viewId":"12345678",
        "dateRanges":[{
            "startDate":"yesterday",
            "endDate":"today"
        }],
        "metrics":[{
          "expression":"ga:users"
        }],
        "dimensions": [{
          "name":"ga:pagePath"
        }]
    }]
}

$.ajax({       
    url: url,
    type: "POST",
    data: params,
    dataType: "json",
    success: function(results) {
        console.log(results)
    },
    error: function(xhr, ajaxOptions, thrownError) {
        alert('failed');
        alert(xhr.status);
        alert(thrownError);
    }
});

1 个答案:

答案 0 :(得分:1)

我强烈建议您使用Google Javascript Client Library来大大简化您的生活。使用该库有很多Code Samples

var DISCOVERY = 'https://analyticsreporting.googleapis.com/$discovery/rest';

// Load the API from the client discovery URL.
gapi.client.load(DISCOVERY).then(function() {

// Call the Analytics Reporting API V4 batchGet method.
gapi.client.analyticsreporting.reports.batchGet( {
  "reportRequests":[{
    "viewId":"12345678",
    "dateRanges":[{ "startDate":"7daysAgo", "endDate":"today"}],
    "metrics":[{"expression":"ga:users"}],
    "dimensions": [{"name":"ga:pagePath"}]
  }]
}).then(function(response) {
  var formattedJson = JSON.stringify(response.result, null, 2);
  document.getElementById('query-output').value = formattedJson;
}).then(null, function(err) {
  // Log any errors.
  console.log(err);
});

至于让jQuery工作,有人提出了一个类似的问题:nodejs他们的解决方案是设置content-type=application/json,这也很幸运Asked and answered

var url = "https://analyticsreporting.googleapis.com/v4/reports:batchGet?";

var data = {
  "reportRequests":[{
    "viewId":"12345678",
    "dateRanges":[{ "startDate":"7daysAgo", "endDate":"today"}],
    "metrics":[{"expression":"ga:users"}],
    "dimensions": [{"name":"ga:pagePath"}]
  }]
}

$.ajax({
  url: url,
  type: "POST",
  data: data,
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  success: function(results) {
    console.log(results)
  },
  error: function(xhr, ajaxOptions, thrownError) {
    alert('failed');
    alert(xhr.status);
    alert(thrownError);
  }
});