【问题标题】:Workaround access permission for Google SheetsGoogle 表格的解决方法访问权限
【发布时间】:2020-01-21 18:07:48
【问题描述】:

作为 Google Apps 脚本的新手,我为电子表格创建/组合了一个脚本,该电子表格将与其他用户共享(可以编辑)。该脚本在我的帐户中运行良好,但是当由其他用户运行时,出现以下消息:

“找不到具有给定 ID 的项目,或者您无权访问它。”

我假设造成这种情况的原因是脚本发送电子邮件、创建新文件并将数据从共享电子表格复制到我的云端硬盘文件夹中未与其他用户共享的其他电子表格(我不希望分享它们)。

问题一:在权限设置中有没有办法解决?

由于脚本会在其他用户输入数据后清除共享电子表格的内容,因此我想创建一个执行以下操作的脚本:

  1. 在共享电子表格中创建新的隐藏工作表
  2. 将数据复制到新的隐藏工作表
  3. 从原始工作表中清除内容
  4. 运行用于发送电子邮件、创建新文件和从隐藏工作表复制数据的脚本的时间触发器,然后将其删除

问题 2:如果问题 1 的答案是否定的,那么除了上述步骤之外,还有其他人能想到更好的方法吗?

谢谢。

【问题讨论】:

  • 如果脚本正在执行所有这些操作,例如发送电子邮件,这是否意味着您希望电子表格对其他用户的帐户执行相同的操作?像其他用户在运行脚本时一样从他们的帐户发送电子邮件?
  • 没有。一切都应该在我的帐户中完成。
  • 欢迎来到 *,请借此机会参加 tour 并学习如何使用 How to Askformat codeminimal reproducible exampleGoogle Apps Script Documentation
  • 在这种情况下,如果其他用户只需要输入数据,为什么不让他们通过表单提交......所以他们得到的只是一个表单链接,电子表格等仍然是你的.
  • 我认为它不能与表单一起使用。输入的数据是在内容被清除之前向用户显示的计算的一部分。

标签: google-apps-script google-sheets web-applications permissions


【解决方案1】:

您可以创建一个WebApp

  • Deploy 它是“你” (Execute the app as: Me),带有共享选项Who has access to the app: 或者AnyoneAnyone within [your domain]Anyone, even anonymous

  • WebApp 将拥有您拥有的所有访问权限,无论哪个用户运行该应用程序。

您可以在脚本中实现service account 与域范围的委派

  • 如果您为服务帐户分配脚本所需的所有范围和访问权限 - 您域中的任何用户都可以通过服务帐户运行脚本
  • 或者,您也可以将服务帐户设置为impersonate您,即代表您行事。

有关示例,请参阅 here

【讨论】: