【发布时间】:2016-11-09 17:31:56
【问题描述】:
短
我需要允许我的 Google 电子表格的用户复制具有限制范围的工作表/标签,并在副本中保留这些限制。这可能吗,因为他们将是复制的工作表/选项卡的“所有者”(尽管不是整个电子表格和脚本)?
长
我创建了一个共享电子表格,其中包含一个带有精心保护范围的模板表/标签。其他用户需要复制该工作表/选项卡,但仍然只有未受保护范围的编辑权限。
当 Google 电子表格/标签通常被复制时,其范围保护不会被复制。此处建议解决此问题:How to duplicate a sheet with protected ranges?
然而,虽然这个脚本对我(作为所有者)来说运行良好,但当其他用户运行它时它会失败。他们要么可以编辑副本上的受限范围(因为他们做了它),要么,如果我尝试删除他们在脚本中的编辑权限,当他们以“您无权执行该操作”运行它时,他们会失败”。
我最初的解决方法是在脚本中写入临时暂停整个电子表格级别的所有权限,以允许脚本运行、复制、删除其范围权限,然后删除其电子表格权限。
问题是这个(以及它的许多变体)不起作用,向用户抛出相同的错误消息(“你没有权限......”)。
另一种方法是让脚本复制工作表,然后应用范围限制。那也失败了,我注意到 removeEditor() 的谷歌脚本文档指出“电子表格的所有者和当前用户都不能被删除”。
我进一步注意到,另一位作者发现与我遇到的问题基本相同:https://webapps.stackexchange.com/questions/95751/google-sheets-script-to-add-protection-and-remove-the-user-running-it
这就是破坏它的原因吗?如果是这样,是否有解决方法?我是否误解了 Google 共享模式的一些(相当基本的)细节?
我也很欣赏编写脚本来显式(如果是暂时)暂停写入电子表格的权限是迟钝的,但这是(据我所知)实现用户复制工作表最终目标的唯一方法,同时保持他们的范围保护。还有其他解决方案吗?
【问题讨论】:
标签: api permissions google-sheets