PUT请求在Postman中正常运行但Google Apps Script调用报错如何解决
问题根因
你代码里有3个关键错误不符合Google Apps Script的UrlFetchApp接口规范:
- headers参数格式错误:
UrlFetchApp要求headers传入单个键值对对象,你写的是包含两个独立对象的数组,这就是Exception: Attribute provided with invalid value: headers报错的直接原因 - 请求体参数名错误:Google Apps Script中请求体对应的配置键是
payload,不是浏览器fetch API用的body,你写的body字段不会被识别,所以移除Content-Type后虽然不报头错误,但实际上根本没把数据提交给接口,才会返回空对象 - 响应解析逻辑错误:
UrlFetchApp.fetch()返回的是HTTPResponse实例,不能直接序列化,需要先调用.getContentText()获取响应正文再转JSON
修正后代码
var payload = { "fieldName": "SingleLineText7", "fieldValue": "question1googleSheet" } var encodedAuth = Utilities.base64Encode("nick:nick"); // headers是单个对象,不是数组 var headers = { "Authorization" : "Basic " + encodedAuth, "Content-Type":"application/json" }; var options = { 'method': 'PUT', // 用payload而不是body传请求体 'payload': JSON.stringify(payload), 'headers': headers, 'followRedirects': true // GAS里控制重定向的参数是followRedirects,不是redirect } var response = UrlFetchApp.fetch(url, options); // 先拿响应文本再输出 Logger.log(response.getContentText());
可选补充
如果你的接口校验会话Cookie,需要把Postman里的Cookie值也加到headers的Cookie字段里,否则可能出现鉴权失败问题。
内容的提问来源于stack exchange,提问作者nneuerburg
相关产品推荐
相关产品推荐

