首页 > 解决方案 > 参数类型与 UrlFetchApp 有效负载不匹配

问题描述

我收到错误消息:当我尝试使用 Google Apps 脚本执行 POST 请求时,传递的参数类型不匹配:“字段”。

我试过添加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);

标签: javascriptgoogle-apps-scriptgoogle-sheetspayloadurlfetch

解决方案


我不确定您要使用的 API 的详细规范。那么从您问题中的错误消息来看,以下3种修改模式怎么样?

模式一:

修改后的脚本:

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

模式二:

修改后的脚本:

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

参考:


推荐阅读