GAS脚本是否可以锁定Google表格,以便其他人无法更改它,直到脚本完成

IMT*_*Man 6 google-sheets google-apps-script

我熟悉锁定服务,但这仅用于锁定脚本。

我有一些代码可以“处理”大型Google表格。我的脚本需要对行重新排序。我需要/想要这样做,因此在脚本运行时,没有其他人可以更改顺序。但是,我仍然需要另一个脚本才能附加行。

我们将Google表单用于我们的团队。它将行追加到工作表。我有一个小时工作,将遍历所有行/记录并“处理它们”。我有一列存储上一次“处理”记录/行的时间。我想对该列进行排序,以使“最旧的”记录位于顶部,然后从上至下开始处理。如果脚本失败或超时,则下一次迭代将重新开始...

我知道我可以使用getValuesgetDisplayValues获取一个数组,然后将其写回,但是我担心如果有人对行进行排序会怎样,因为回写数组时会把事情弄糟。

有什么办法可以实现我的目标?我希望能够处理记录,并保持行顺序以避免中断我的处理。

Rub*_*bén 3

“完全”阻止电子表格的方法是更改​​电子表格共享设置。删除所有编辑器或将其更改为查看者,脚本完成后,将其更改回编辑器。在极端情况下,使用第二个帐户充当关键文件/电子表格的所有者,并且仅将其用于此目的,因此您可以阻止常规帐户对电子表格进行更改。

注意:Google 表单editResponseUrl可用于编辑链接的电子表格。

我面临类似的情况,但我采取了不同的方法,我使用索引/键列(您可以使用时间戳列)并使用索引/键将每个编辑的行保存到正确的位置,然后写入单个操作中的整个结果数组(通过使用setValues())。就我而言,这很简单,因为我只需要值,我不担心注释、数据验证、条件格式、注释等,并且没有链接到我的电子表格的 Google 表单。

有关的

  • @IMTheNacho您还可以使用隐藏的[开发人员元数据](https://developers.google.com/sheets/api/guides/metadata)来遵循上述相同的索引/键方法。 (2认同)