使用UrlFetchApp调用Bling API获产品列表时遇无效参数异常求助
问题解决:UrlFetchApp GET请求异常修复
你的代码存在几个关键错误,直接导致了Invalid argument异常,以下是具体修正方案:
错误点分析
- URL格式错误:你把完整的curl命令当成了请求URL,UrlFetchApp需要的是纯API端点地址,而非curl命令文本。
- GET请求错误携带Payload:GET请求无需(也不应)携带
payload参数,且你提供的XML是用于插入产品的,和列表查询接口无关。 - 参数传递方式错误:curl的
-G参数作用是将-d后的参数转为URL查询字符串,你需要把apikey以查询参数的形式附加到URL,或使用UrlFetchApp的params选项传递。
修正后的代码(推荐写法)
function listaproduto() { // 正确的API端点地址 const baseUrl = 'https://bling.com.br/Api/v2/produtos/json/'; const apiKey = 'IPutTheKeyHere'; // 配置请求选项:用params传递查询参数,GET请求无需payload const options = { method: 'GET', followRedirects: true, muteHttpExceptions: true, params: { apikey: apiKey } }; const response = UrlFetchApp.fetch(baseUrl, options); Logger.log(response.getContentText()); }
另一种写法(直接拼接URL参数)
如果你习惯像插入产品时那样直接拼接URL,也可以用这种方式:
function listaproduto() { const apiKey = 'IPutTheKeyHere'; // 直接将apikey作为查询参数拼接到URL后 const url = `https://bling.com.br/Api/v2/produtos/json/?apikey=${apiKey}`; const options = { method: 'GET', followRedirects: true, muteHttpExceptions: true // 此处无需payload参数 }; const response = UrlFetchApp.fetch(url, options); Logger.log(response.getContentText()); }
关键说明
- curl命令仅为示例,需转换为UrlFetchApp可识别的格式:
-X GET对应method: 'GET',-G -d apikey=xxx对应URL查询参数(拼接URL或用params选项均可)。 - 产品列表查询接口不需要插入产品时用到的XML数据,务必移除
payload中的xml内容。
内容的提问来源于stack exchange,提问作者Livre Surf
相关产品推荐
相关产品推荐

