无法访问从 appscript 发布到网络的电子表格

Posted

技术标签:

【中文标题】无法访问从 appscript 发布到网络的电子表格【英文标题】:Unable to access spreadsheet which is published to the web from appscript 【发布时间】:2020-07-11 22:51:20 【问题描述】:

我编写了一个应用脚本(网络应用)来访问电子表格并根据搜索条件显示其内容。

Web app should display content based on given name

使用我自己的 gmail 帐户可以正常工作。但是当其他用户(获得应用脚本网络应用的访问权限)尝试使用此应用时,他们看到的错误为

“例外:您无权访问所请求的文档。”执行 SpreadsheetApp.openById(spreadsheetId) 时抛出错误。

通过明确访问(与用户共享)电子表格,他可以毫无问题地访问数据。 但既然电子表格已经发布到网络上,任何人都可以访问,为什么还要再次要求明确的访问权限才能执行电子表格。

有没有办法在不与最终用户共享的情况下访问电子表格数据?提前感谢您的帮助。

【问题讨论】:

以“我”的身份执行。 它适用于我,但不适用于其他用户。 你好@Avinash!当您单击“部署为 Web 应用程序”时,您应该会看到一个菜单,其中一个选项是“将应用程序执行为:”。您能否确认您在该区域中具有 @TheMaster 建议的值“Me”? 感谢您的回复...我已在“将应用程序执行为:”作为“访问网络应用程序的用户”授予访问权限,因为此应用程序也可供其他人访问。因此,如果我只给出“执行应用程序为:”作为我,我认为除了我之外的任何人都无法访问它。如果我理解错误,请纠正我。如我的问题中所述...我(也是其他用户)能够访问应用脚本网络应用,但无法访问已发布到网络的电子表格。 【参考方案1】:

我了解到您发布了一个可打开某个工作表的网络应用。在“部署为 Web 应用程序”菜单中(从 Apps 脚本编辑器打开并选择 Publish ⮞ Deploy as web app),系统会要求您确定如何“以 Web 应用程序的身份执行应用程序 ”。您可以在这些值之间进行选择:

我:每个网络应用用户都会以自己的身份打开工作表。 用户访问网络应用程序:每个网络应用程序用户都将以自己的身份打开工作表。

由于第二种情况,用户需要以前的访问权限才能打开工作表。由于您无论如何都想授予他们访问权限,因此我建议使用第一个选项。如有任何疑问,请问我。

【讨论】:

以上是关于无法访问从 appscript 发布到网络的电子表格的主要内容,如果未能解决你的问题,请参考以下文章

未返回Google Appscript VALUE

使用 JDBC executeBatch() 通过 appscript 批量插入 Cloud SQL,耗时过多

Google 表格/AppScript - 将数据从一张表格复制到另一张表格

使用Appscript将Google图表中的3d图表作为图像插入电子邮件中

尝试使用 Django 发送电子邮件时出现“[Errno 101] 网络无法访问”

即使使用推荐的设置,也无法从渲染器/预加载脚本中访问电子函数