【问题标题】:How to roll-back change events to a Google sheet or disallow only change events but allow edit rights to users?如何将更改事件回滚到 Google 工作表或仅允许更改事件但允许用户编辑权限?
【发布时间】:2017-09-24 21:36:33
【问题描述】:

尝试构建一个仪表板,其中,在某些工作表中,用户需要能够添加行,但不应该能够更改预设单元格的值。如果我保护这些单元格,他们无法添加行,如果我不保护工作表,并使用 Google Apps 脚本 onEdit 触发器恢复对预设单元格的更改,他们能够插入行,并且无法更改值,但这会使我的工作表保持打开状态不可预见的修改,例如插入列、插入比需要更多的行、更改格式等。

有没有办法让他们添加行但除了他们需要编辑的有限单元格之外不对工作表执行任何其他操作?

【问题讨论】:

    标签: google-apps-script google-sheets google-spreadsheet-api


    【解决方案1】:

    我经常看到此问题/请求,您正试图以类似表单的方式使用 Google 表格,其中用户只应被允许执行 X 操作(有些人使用 Google 表格将类似问题输入电子表格)。

    1. 这里的一个想法是创建一个按钮来添加一行。默认情况下,您可以保护所有内容。按下按钮时,Google Apps 脚本可以取消保护并在该位置创建一行。此解决方案的一个问题是 Google Apps 脚本中的按钮就像浮动图像 - 因此您需要创建像“addRowAtSheet4”这样的函数名称。这是该按钮的外观,其中 ADD CITATION 将在点击时创建一个新行:

    另一个问题是想要损坏您的电子表格的用户将能够这样做,因为保护是从用户的绑定脚本完成并从用户的帐户运行的,这使我想到了第二种解决方案:

    1. 如果您需要真正的单元格保护(假设您是电子表格的所有者),您可以创建一个独立的webapp 来执行所有管理工作并根据需要将所有内容锁定在用户端。当用户单击按钮时,从电子表格的 GAS 绑定脚本向已发布的 webapp 发出 web 请求,并且在 webapp 中,您代表用户从您自己的帐户添加行(即“将应用程序执行为: 我”)。像这样,发送的参数是要添加的行,例如:

    请注意,如果可以有多个同时用户在同一个地方添加行,您可能喜欢使用LockService

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多