You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

VBA向Google Apps Script发送POST请求持续返回405状态码问题

解决VBA POST请求Google Apps Script API返回405的问题

核心原因排查及解决方案

1. 确认GAS部署URL的正确性

必须使用正式部署后的Web应用URL,格式为https://script.google.com/macros/s/[唯一部署ID]/exec。绝对不能使用脚本编辑器中的「测试部署」预览URL(格式含/dev),这类预览URL仅支持浏览器访问,外部POST请求会直接返回405错误。

2. 对齐VBA请求头与Postman配置

Postman能正常请求说明GAS接口本身没问题,问题大概率出在VBA的请求头或对象版本:

  • 使用高版本XMLHTTP对象:推荐MSXML2.XMLHTTP.6.0,避免旧版本兼容性问题。
  • 匹配Postman的Content-Type:如果Postman中设置的是application/json,VBA需同步修改,而非text/plain。
  • 添加User-Agent头:模拟浏览器请求,避免GAS部署拦截默认VBA请求头。

调整后的VBA代码示例:

Dim objHTTP As Object
Set objHTTP = CreateObject("MSXML2.XMLHTTP.6.0")
With objHTTP
    .Open "POST", Url, False
    .setRequestHeader "Content-Type", "application/json" ' 和Postman保持一致
    .setRequestHeader "Accept-Language", "en-US"
    .setRequestHeader "User-Agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/114.0.0.0 Safari/537.36"
    .send JsonString
    ' 输出响应信息用于调试
    Debug.Print "状态码:" & .Status
    Debug.Print "响应内容:" & .ResponseText
End With
Set objHTTP = Nothing

3. 验证GAS部署权限设置

重新部署GAS时,确保:

  • 部署类型选择「Web应用」
  • 执行权限设置为「任何人,甚至匿名」
  • 访问权限设置为「任何人,甚至匿名」
    部署完成后复制最新的URL替换VBA中的旧地址。

4. 检查请求内容格式

确保JsonString是有效的JSON格式(比如键值对用双引号包裹),如果Postman发送的是JSON数据,VBA中的字符串必须完全匹配格式要求。

5. 排查重定向问题

旧的GAS部署URL可能存在重定向,若重定向后的地址不支持POST方法会返回405。使用最新的部署URL,同时可在VBA中添加头禁用不必要的连接复用:.setRequestHeader "Connection", "close"。


内容的提问来源于stack exchange,提问作者Hubert1957

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 11:47:44