在Google App Script中调用Growatt API遇权限拒绝,求正确方案
解决Growatt queryLastData API的"Access Denied"问题
以下是修正后的Google App Script代码,可解决你的请求错误:
const url = 'https://openapi.growatt.com/v4/new-api/queryLastData'; const options = { method: 'POST', headers: { 'token': 'xxMyTokenxx', 'Content-Type': 'application/x-www-form-urlencoded' }, payload: { deviceType: 'sph', deviceSn: 'xxMySNxx' } }; try { const response = UrlFetchApp.fetch(url, options); console.log(response.getContentText()); } catch (error) { console.error('请求失败:', error.toString()); }
原代码的错误点分析:
- Token位置错误:API要求
token作为HTTP请求头传递,原代码直接把token放在options根节点,必须移到headers对象内。 - Payload格式不匹配:Postman使用的是
application/x-www-form-urlencoded格式(对应--data-urlencode参数),但你用JSON.stringify()把数据转成了JSON格式,与API要求不符。UrlFetchApp会自动将payload中的对象编码为x-www-form-urlencoded格式,直接传入对象即可。 - 缺少Content-Type声明:虽然UrlFetchApp在传入对象类型的
payload时会自动设置该头,但显式声明可避免默认行为的不确定性,确保请求格式正确。 - Cookie处理:Postman中的Cookie是自动生成的会话标识,根据你提供的API文档描述,这部分并非必需项。如果测试后仍报错,可尝试在
headers中添加Cookie字段(复制Postman中的对应值),但优先使用上述精简版本测试。
内容的提问来源于stack exchange,提问作者MikeBox
相关产品推荐
相关产品推荐

