我创建了一个带有单个函数的Spreadsheet绑定脚本:
function doGet() {
Logger.log("test");
}
然后我部署:执行为我,访问 - 任何人,甚至是匿名。
但是,转到发布的网站会失败并显示错误“抱歉,此时无法打开该文件”。 (或者如果通过curl访问 - 返回404)。
完全相同的过程适用于独立脚本。关于容器绑定脚本是否存在限制或问题?
答案 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/上的链接)