Analytics API v4: недопустимая ошибка полезной нагрузки json

Я пишу скрипт приложений Google в редакторе кода электронной таблицы Google. Я хочу получить некоторые данные из Google Analytics, которые должны использовать GA API v4. Я знаю, что в скрипте приложений Google есть встроенная поддержка Analytics API, но только версия v3.

Поэтому я следую этому руководству Скрипт Google Apps - внешний API и использую эта библиотека googlesamples / apps-script-oauth2 для выполнения oauth2.

Я уверен, что включил API Analytics V4 в консоли API и получил правильный идентификатор клиента и секрет. После auth2 я написал код для доступа к данным

  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());

Затем я получил HTTP-ответ об ошибке

[16-10-30 21:25:51:325 PDT] {
  "error": {
    "code": 400,
    "message": "Invalid JSON payload received. Unknown name \"reportRequests\": Cannot bind query parameter. 'reportRequests' is a message type. Parameters can only be bound to primitive types.",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "description": "Invalid JSON payload received. Unknown name \"reportRequests\": Cannot bind query parameter. 'reportRequests' is a message type. Parameters can only be bound to primitive types."
          }
        ]
      }
    ]
  }
}

Что я делаю неправильно? и что означает сообщение об ошибке?

Спасибо!


person Liu Dapeng    schedule 31.10.2016    source источник
comment
Убедитесь, что вы также включили или включили Analytics API в Advanced Google Services в редакторе скриптов, который вы используете. Ресурс - ›Расширенные службы Google -› Включите Analytics API. Еще одна вещь, которая, я думаю, может вам помочь, - это прочитать эту документацию.   -  person KENdi    schedule 01.11.2016
comment
он был включен в первую очередь.   -  person Liu Dapeng    schedule 25.11.2016


Ответы (1)


Две возможные проблемы:

  1. В сообщении об ошибке указано INVALID_ARGUMENT. Ваша полезная нагрузка содержит dateRages, которое должно быть dateRanges, иначе он не будет распознан как действительный запрос из-за опечатки.

  2. См. Этот ответ относительно передачи 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)
    

Надеюсь это поможет

person Bardy    schedule 17.11.2016