部署为Web App的容器绑定脚本返回404(未找到)

时间:2017-10-31 01:06:08

标签: google-apps-script

我创建了一个带有单个函数的Spreadsheet绑定脚本:

function doGet() {
  Logger.log("test");
}

然后我部署:执行为我,访问 - 任何人,甚至是匿名。

但是,转到发布的网站会失败并显示错误“抱歉,此时无法打开该文件”。 (或者如果通过curl访问 - 返回404)。

完全相同的过程适用于独立脚本。关于容器绑定脚本是否存在限制或问题?

2 个答案:

答案 0 :(得分:2)

这可能是个错误。从容器绑定脚本返回的已发布端点URL的结构与独立脚本的端点URL不同。

集装箱结合:

MongoCredential

独立:

https://script.google.com/macros/u/1/s/<script-id>/exec

解决方案是使用独立脚本的url结构并将https://script.google.com/a/<google-apps-domain>/macros/s/<script-id>/exec 替换为我需要的脚本。这似乎有效。

答案 1 :(得分:1)

解决方法

容器绑定脚本URL具有以下形式:

https://script.google.com/macros/u/1/s/<script-id>/exec

删除u/1/部分:

https://script.google.com/macros/s/<script-id>/exec

参考

解释

此时有两个看似相关的问题

值得注意的是,来自https://developers.google.com/apps-script/guides/web

  

网络应用的要求

     

如果脚本符合以下要求,则可以将其发布为Web应用程序:

     
      
  • 它包含doGet(e)或doPost(e)功能。
  •   
  • 该函数返回HTML服务HtmlOutput对象或Content服务   TextOutput对象。
  •   

据我了解,您的脚本存在问题:无法返回对象。无论如何,它应该返回

  

脚本已完成,但未返回任何内容。

对于单行网络应用,请尝试以下内容:

function doGet(e) {
  return ContentService.createTextOutput('Hello world!');
}

关于为什么你的代码在独立脚本上“工作”但在有界脚本上返回错误的解释,也许这是一个小问题,它将很快“解决”。如果没有,请查看问题跟踪器(请点击https://developers.google.com/apps-script/上的链接)