Google apps script 如何解决使用匿名Web应用时出现的Google登录问题

Google apps script 如何解决使用匿名Web应用时出现的Google登录问题,google-apps-script,Google Apps Script,我不熟悉应用程序脚本,希望匿名用户访问绑定到电子表格的容器中的web应用程序脚本 web应用程序显示一个表单,该表单收集脚本存储在包含的电子表格中的信息。当我登录到我的google帐户时,该表单工作正常,但当我注销时,web应用程序url将显示一个google登录屏幕,而不是我的表单 我正在努力寻找解决这个问题的方法。我查过: 脚本被部署为以“我”的身份执行,并由任何人+匿名者访问 我正在使用“exec”url 我已将oauth范围放入清单中,并尽可能缩小范围 我已批准未经验证的应用程序 以

我不熟悉应用程序脚本,希望匿名用户访问绑定到电子表格的容器中的web应用程序脚本

web应用程序显示一个表单,该表单收集脚本存储在包含的电子表格中的信息。当我登录到我的google帐户时,该表单工作正常,但当我注销时,web应用程序url将显示一个google登录屏幕,而不是我的表单

我正在努力寻找解决这个问题的方法。我查过:

  • 脚本被部署为以“我”的身份执行,并由任何人+匿名者访问
  • 我正在使用“exec”url
  • 我已将oauth范围放入清单中,并尽可能缩小范围
  • 我已批准未经验证的应用程序
以下是一些我不知道是否导致问题的额外因素:

  • 在发送给用户供其匿名使用之前,我向web app exec url添加了一个查询参数
  • 除了doget()之外,脚本中还有许多其他函数,这些函数处理web应用程序表单中的数据,将数据写入包含的电子表格,并将其中一些返回给用户。在同一脚本中,我还向包含的电子表格添加了一个菜单

似乎很少有方法可以获取此问题的日志记录或疑难解答信息,尤其是对于容器绑定脚本。有更多经验的人可以解释为什么会出现此问题,并建议我如何排除故障和解决此问题吗?正如我所说,当我登录时,web应用程序url可以完美工作,但当我注销或处于匿名模式时,我会得到一个Google帐户登录表单。谢谢。

我解决了这个问题,同时根据要求创建了一个最小的可复制示例

问题在于我对部署、/exec、/dev和V8与rhino的混淆。 关于/dev/exec非常有用

我发现的是:

/如果您未在浏览器中登录,dev总是要求您登录您的google帐户,例如,匿名模式

如前所述,V8 getUrl()在什么情况下返回/dev或/exec有些混乱

我对匿名web应用的疑难解答的建议:

  • 在使用/dev测试匿名web应用程序时要非常小心-它总是导致登录请求
  • 仔细检查getURL()返回的内容,并结合使用的是rhino还是V8

  • 我通过在清单中输入:
    “runtimeVersion”:“弃用”

    请添加一个@Rubén谢谢,从而解决了我的特殊问题。这是一个很好的挑战。当我剥离了复杂性,但仍然存在问题时,我会回来。这也可能是解决问题的最佳方法?对于未来的任何人来说,Alan Wells都知道如何使用应用程序脚本获取部署信息。但是,这并不能解决我的需要,因为我正在寻找一种获取exec web app url的方法,该url不涉及帐户持有人的操作,除非通常授予脚本权限。只要web app已部署,则
    ScriptApp.getService().getUrl()如果从
    /exec
    环境调用,
    将获取
    /exec
    url,但是如果从
    dev
    环境调用,将获取
    /dev
    url。查看差异。我不认为你需要更多,无论版本如何,所以不要认为你的认证问题来自这里。你能提供你的
    doGet()
    函数,你在代码中使用的服务列表,以及你在
    File>Project properties>scopes
    菜单项中看到的作用域列表吗?@我有一位大师,但通过测试,情况似乎不再如此。签出,整个代码是
    函数doGet(){return HtmlService.createHtmlOutput(ScriptApp.getService().getUrl());}
    。V8已启用。我很高兴知道,创建。谢谢分享你的发现。