Google Apps Script中UrlFetchApp.fetch调用WooCommerce API异常问题
解决UrlFetchApp调用WooCommerce API参数失效问题
核心问题原因
你脚本中的URL使用了HTML转义字符&作为参数分隔符,而Google Apps Script的JavaScript字符串无需HTML转义,服务器会将&识别为普通字符,导致min_date之后的参数无法被正确解析,最终返回默认的无参数过滤结果。
解决方案
1. 修正URL中的参数分隔符
直接将URL中的&替换为原生的&,确保服务器能正确识别每个查询参数:
function myFunction() { var url = "https://kidswonder.net/wp-json/wc-bookings/v1/products/slots?min_date=2023-01-30&max_date=2023-01-31&product_ids=16304"; var response = UrlFetchApp.fetch(url); Logger.log(response.getContentText()); }
2. 用参数对象构建URL(更规范可靠)
手动拼接URL容易出现转义错误,建议通过参数对象动态构建URL,自动处理编码:
function myFunction() { var baseUrl = "https://kidswonder.net/wp-json/wc-bookings/v1/products/slots"; var params = { min_date: "2023-01-30", max_date: "2023-01-31", product_ids: 16304 }; // 动态拼接带编码的查询参数 var queryString = Object.keys(params).map(key => { return `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`; }).join("&"); var url = `${baseUrl}?${queryString}`; var response = UrlFetchApp.fetch(url); Logger.log(response.getContentText()); }
3. 添加API认证头(若需要)
浏览器访问正常可能是因为保留了登录会话,但UrlFetchApp无会话状态,如果WooCommerce API启用了认证,需添加Basic Auth头:
function myFunction() { var baseUrl = "https://kidswonder.net/wp-json/wc-bookings/v1/products/slots"; var params = { min_date: "2023-01-30", max_date: "2023-01-31", product_ids: 16304 }; var queryString = Object.keys(params).map(key => { return `${encodeURIComponent(key)}=${encodeURIComponent(params[key])}`; }).join("&"); var url = `${baseUrl}?${queryString}`; // 替换为你的WooCommerce API密钥 var consumerKey = "你的消费者密钥"; var consumerSecret = "你的消费者密钥密码"; var options = { headers: { "Authorization": "Basic " + Utilities.base64Encode(`${consumerKey}:${consumerSecret}`) } }; var response = UrlFetchApp.fetch(url, options); Logger.log(response.getContentText()); }
验证方式
执行脚本后查看日志,若返回数据与浏览器访问结果一致,说明参数已被正确识别。
内容的提问来源于stack exchange,提问作者Cameron Swen
相关产品推荐
相关产品推荐

