Несоответствие типов параметров с полезной нагрузкой UrlFetchApp - PullRequest
3 голосов
/ 21 апреля 2020

Я получаю сообщение об ошибке: пропущено несоответствие типов параметров: «поля» при попытке выполнить запрос POST с помощью скрипта Google Apps.

Я пытался добавить JSON.stringify(requestBody) в полезную нагрузку, но это тоже не сработало. Куда я здесь не так?

 var fields = ["id","name","group_name"]

  var requestBody = {
    "project_id": "3259344",
    "fields": fields,
    "limit": "30"
} 

  var options =
      {
           'method'  : 'POST',
           'headers' : {
           'User-Id' : email,
           'Authorization' : 'Bearer '+ apiKey
           }, 
          'payload' : requestBody
      };


var response = UrlFetchApp.fetch("https://api.test.com/v2/json/get/keywords", options);

1 Ответ

2 голосов
/ 21 апреля 2020

Я не уверен насчет подробной спецификации API, который вы хотите использовать. Итак, из сообщения об ошибке в вашем вопросе, как насчет следующих 3 шаблонов модификации?

Шаблон 1:

Модифицированный скрипт:

var fields = ["id","name","group_name"];
var requestBody = {
  "project_id": "3259344",
  "fields": fields,
  "limit": "30"
};
var options = {
  'method'  : 'POST',
  'headers' : {
    'User-Id' : email,
    'Authorization' : 'Bearer ' + apiKey
  }, 
  'payload' : JSON.stringify(requestBody),  // Modified
  'contentType': 'application/json'  // Added
};
var response = UrlFetchApp.fetch("https://api.test.com/v2/json/get/keywords", options);

Шаблон 2:

Модифицированный скрипт:

var fields = "id,name,group_name";  // Modified
var requestBody = {
  "project_id": "3259344",
  "fields": fields,
  "limit": "30"
};
var options = {
  'method'  : 'POST',
  'headers' : {
    'User-Id' : email,
    'Authorization' : 'Bearer ' + apiKey
  }, 
  'payload' : JSON.stringify(requestBody),  // Modified
  'contentType': 'application/json'  // Added
};
var response = UrlFetchApp.fetch("https://api.test.com/v2/json/get/keywords", options);

Шаблон 3:

Модифицированный скрипт:

var fields = "id,name,group_name";  // Modified
var requestBody = {
  "project_id": "3259344",
  "fields": fields,
  "limit": "30"
};
var options = {
  'method'  : 'POST',
  'headers' : {
    'User-Id' : email,
    'Authorization' : 'Bearer ' + apiKey
  }, 
  'payload' : requestBody
};
var response = UrlFetchApp.fetch("https://api.test.com/v2/json/get/keywords", options);

Ссылка:

...