You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多
文档控制台
免费开始使用

在Google Apps Script中调用Wunderlist API遇'invalid request'错误求助

问题分析与解决方案

我来帮你排查这个问题——核心原因出在GET请求的参数传递方式上,咱们一步步理清楚:

错误根源

你的curl命令是通过URL查询字符串传递list_id参数(?list_id=my-list-id),这完全符合Wunderlist Tasks API的要求;但在Google Apps Script代码里,你错误地把list_idcompleted放到了payload中,并且给GET请求设置了这个payload。

HTTP规范中,GET请求本身不应该携带请求体(payload),虽然部分客户端支持这种写法,但Wunderlist的API并不接受这种参数传递方式,这就是你收到invalid request错误的直接原因。

你调用getLists接口成功,是因为该接口不需要额外参数,只需要请求头,没有涉及参数传递的问题,所以能正常运行。

修正后的代码

把参数拼接成URL查询字符串,移除GET请求的payload即可:

var accessToken = 'my-access-token';
var clientID = 'my-client-id';
var url = 'https://a.wunderlist.com/api/v1/';
var headers = {
  'X-Access-Token': accessToken,
  'X-Client-Id': clientID
};

function getTasks(listId){
  // 将筛选参数拼接为URL查询字符串
  var queryParams = `list_id=${listId}&completed=true`;
  var options = {
    "method" : 'get',
    "headers" : headers
    // 移除GET请求的payload
  };
  var response = UrlFetchApp.fetch(`${url}tasks?${queryParams}`, options);
  return response;
}

function main(){
  // 注意:listId如果是字符串需要加引号,如'my-list-id'
  var result = getTasks('my-list-id');
}

补充说明

  • 移除了Content-Type请求头:GET请求没有请求体,这个头是多余的,保留也不会报错,但没必要。
  • 保持和curl一致的参数传递逻辑:通过URL查询字符串传递筛选条件,完全匹配Wunderlist API的要求。
  • main函数的listId格式注意:如果是字符串类型的ID,必须添加单/双引号;如果是数字ID直接传入数字即可。

这样修改后,你的请求逻辑就和curl完全一致了,应该能正常获取任务数据。

内容的提问来源于stack exchange,提问作者I-was-a-Ki

火山引擎 最新活动