如何使用Google App Script为GET请求添加嵌套结构的URL查询参数
修正方案
你原有代码存在以下几处错误:
- GET请求的查询参数需拼接在URL末尾,不能放在headers的
Request字段中 - JS对象的key包含
[]这类特殊字符时必须用引号包裹,name、eq为字符串值也需要加引号,否则会被识别为未定义变量 method是options的根级配置项,不属于headers字段- GET请求无请求体,不需要设置
Content-Type: application/json请求头
正确代码示例
function getProducts() { // 基础URL,请替换为实际域名 const baseUrl = 'URL/rest/V1/products'; // 定义查询参数,key用引号包裹,字符串值也加引号 const params = { "searchCriteria[filter_groups][0][filters][0][field]": "name", "searchCriteria[filter_groups][0][filters][0][value]": "10", "searchCriteria[filter_groups][0][filters][0][condition_type]": "eq" }; // 将参数转为查询字符串拼接到URL const queryString = Object.keys(params) .map(key => `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`) .join('&'); const requestUrl = `${baseUrl}?${queryString}`; const options = { 'method': 'get', 'headers': { 'Accept': 'application/json', // 注意如果是Bearer令牌,需要加上Bearer前缀,示例:'Authorization': 'Bearer ' + TOKEN 'Authorization': TOKEN } }; try { const res = UrlFetchApp.fetch(requestUrl, options); Logger.log(res.getContentText()); // 可直接解析JSON使用 // const data = JSON.parse(res.getContentText()); } catch (e) { // 捕获错误方便排查 Logger.log('请求错误:' + e.message); if (e.response) { Logger.log('错误响应内容:' + e.response.getContentText()); } } }
注意事项
- 请确认你的
TOKEN值符合接口要求,大部分OAuth2接口的Authorization头需要加上Bearer前缀 - 如果参数值有中文或特殊字符,
encodeURIComponent会自动处理编码,避免乱码问题
内容的提问来源于stack exchange,提问作者User-15895
相关产品推荐
相关产品推荐

