PHP to Google WebApp returns "<H1>Moved Temporari


PHP to Google WebApp returns "<H1>Moved Temporarily</H1>The document has moved"

有人知道如何从PHP调用在谷歌AppScript编写的web应用程序吗?

我已经发布了我的应用程序以我的身份运行,并使其可供"所有人"使用。测试url如下所示:

https://script.google.com/macros/s/xXxXxX/dev?Jobno=11&Pickupfrom=Aa&Deliverto=bb&Readyby=22&Deliverby=33

此链接将新记录附加到google电子表格中。该链接只有在我在登录到谷歌的浏览器中手动提交时才有效。如果我退出谷歌,它会把我转到一个登录页面。这对我来说毫无意义。我不明白为什么要强制认证。

任何想法?

描述的行为是一个特性:

https://developers.google.com/apps-script/guides/content重定向

<标题> 重定向

出于安全原因,内容服务返回的内容不是从script.google.com提供的,而是重定向到script.googleusercontent.com的一次性URL。这意味着如果你使用Content服务将数据返回给另一个应用程序必须确保HTTP客户端被配置为遵循重定向。例如,在cURL命令行实用程序中,添加标志-L。检查请参阅HTTP客户端的文档,了解如何启用此行为

你只需要发送一个header来跟随url

 curl_setopt($url, CURLOPT_FOLLOWLOCATION, true);

其中$url是用curl_init('apps script url')初始化的url,像这样:

$url = curl_init('https://script.google.com/YOUR_APPS_SCRIPT_URL');

添加行:

curl_setopt($url, CURLOPT_FOLLOWLOCATION, true);

只在发送其他重要的标头之后

听起来好像和它的发布方式有关。重新发布并将"谁有权访问该应用程序"更改为"任何人,甚至匿名",您应该解决问题。

编辑:在发布

之前记得保存一个新版本

你应该使用"exec"版本的应用,而不是"dev"版本的应用。

并且,正如在另一个答案中提到的,不要忘记保存一个版本并使用这个最新版本更新您的部署。

"dev"版本仅用于测试,并且只有脚本编辑器登录时才能访问。

你的url应该是这样的:

https://script.google.com/macros/s/xXxXxX/exec?Jobno=11&Pickupfrom=Aa&Deliverto=bb&Readyby=22&Deliverby=33