Analytics API v4无效的json有效负载错误

时间:2016-10-31 04:28:50

标签: javascript google-apps-script google-analytics-api google-spreadsheet-api

我正在Google电子表格代码编辑器中编写Google应用脚本。我想从Google Analytics中提取一些必须使用GA API v4的数据。我知道Google应用脚本中支持Analytics API但只支持v3版本。

所以我按照本指南Google Apps Script - External API并使用此库googlesamples/apps-script-oauth2来执行oauth2。

我确信我已在API控制台中启用了Analytics V4 API,并获得了正确的客户端ID和密码。在auth2之后,我编写了访问数据的代码

.sendPluginResult()

然后我收到错误http响应

  var payload = {'reportRequests' : [
    {
      'metrics' : [{'expression':'ga:users'}],
      'viewId' : 'xxxxxxxx',
      'dateRages' : [{'startDate':'2016-10-01','endDate':'2016-10-10'}]
    }
  ]};

  var options = {
    'method' : 'post',
    'headers': {
       'contentType': 'application/json',
       'Authorization': 'Bearer ' + service.getAccessToken()
     },
    'payload' : payload,
    'muteHttpExceptions':true
   };

  var resp = UrlFetchApp.fetch("https://analyticsreporting.googleapis.com/v4/reports:batchGet", options);
  Logger.log(resp.getContentText());

我做错了什么?错误信息是什么意思?

谢谢!

1 个答案:

答案 0 :(得分:2)

两个潜在问题:

  1. 错误说明INVALID_ARGUMENT。您的有效负载包含dateRages,其应为dateRanges,否则由于拼写错误而无法将其识别为有效请求。

  2. 请参阅此answer regarding passing JSON data:如果您希望传递Content-Type application/json的数据,则需要为payload参数提供字符串,而不是JS对象。

    而不是:

    // JS Object, by default will be encoded as formdata (not desired)
    'payload' : payload
    

    使用:

    // Convert JS Object to JSON string
    'payload' : JSON.stringify(payload)
    
  3. 希望这有帮助