请求 public Google 表单 returns 拒绝访问:HTTP

Request to a public Google Form returns Access Denied: HTTP

我正在尝试使用 MS Excel 自动填写 Google 表格,但我在访问时遇到问题,之前使用的代码相同,但我没有做任何更改。这是代码:

Sub postGoogleData()
Dim params As String, url As String

url = "https://docs.google.com/forms/u/0/d/e/1FAIpQLSejadFloQF5V69ZZ1fc1kManOZ_vMw8kq10-56ENroZ4c6xiw/formResponse"
params = "entry.1880992192=<NAME>&entry.2125520249=<IG>&entry.1421191722=<E>&entry.1858469755=Option+1&entry.1858469755=Option+2&dlut=1632409237551&entry.1858469755_sentinel=&fvv=1&draftResponse=%5Bnull%2Cnull%2C%22-829268773860757612%22%5D&pageHistory=0&fbzx=-829268773860757612"

params = Replace(params, "<NAME>", Range("A1").Value)
params = Replace(params, "<IG>", Range("A2").Value)
params = Replace(params, "<E>", Range("A3").Value)
  
' add a reference to Microsoft XML 6.0 (tools...reference...microsoft XML v6.0_

Dim http As New MSXML2.XMLHTTP60

http.Open "POST", url, False
http.setRequestHeader "content-type", "application/x-www-form-urlencoded"
http.send params

End Sub

我收到错误 Access Denied。我更改了 Internet Explorer 选项:Internet 选项安全 > 自定义安全级别 > 杂项 > 跨域访问数据源 > 启用。这消除了错误,但我的 Google 表单未填充。

我试过 MSXML2.ServerXMLHTTP60 但这也没有填充 Google 表格。

这里是spreadsheet that contains the summary of all the responses. Here is the Google Form。我的 objective 是使用 Excel 自动填写 Google 表格。此代码以前可以工作,但我在以前可以工作的文件中遇到 Access Denied 错误。可能是因为 Google 必须在他们的网络服务中实施更改?

感谢您的帮助。谢谢。

您应该将应用设置设为以下值:

如果打开这些选项中的任何一个,则需要使用 google 帐户登录,这就是您获得 Access Denied

的原因

似乎 Google 阻止了没有 User-Agent 的请求,因此您需要添加类似

的内容
http.setRequestHeader "User-Agent", "my generic vba script"

在发送参数之前。或者你伪造任何现有的用户代理,比如

http.setRequestHeader "User-Agent", "Mozilla/5.0 (iPad; U; CPU OS 3_2_1 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Mobile/7B405"

添加该行后,电子表格中将显示答案:


像这样使用

http.Open "POST", url, False
http.setRequestHeader "User-Agent", "my generic vba script"
http.setRequestHeader "content-type", "application/x-www-form-urlencoded"
http.send params

正如您在下面的屏幕录像中所见,它可以正常工作。我刚刚复制了您的代码并添加了对 Microsoft XML 6.0 的引用,添加了用户代理行并 运行 它。