提问人:IMTheNachoMan 提问时间:10/2/2019 更新时间:10/2/2019 访问量:199
GAS 脚本是否可以锁定 Google 表格,以便在脚本完成之前其他人无法更改它
Is it possible for a GAS script to lock a Google Sheet so nobody else can alter it until the script is done
问:
我熟悉锁定服务,但这仅适用于锁定脚本。
我有一些代码可以“处理”一个大的谷歌表格。我的脚本需要对行重新排序。我需要/想要这样做,以便在脚本运行时,没有其他人可以更改顺序。但是,我仍然需要另一个脚本才能附加行。
我们使用 Google 表单作为我们团队的摄入量。它将行追加到工作表中。我有一份每小时的工作,将遍历所有行/记录并“处理它们”。我有一列,用于存储上次“处理”记录/行的时间。我想对该列进行排序,使“最旧”的记录位于顶部,然后从上到下开始处理。如果脚本失败或超时,则下一次迭代将重新开始......
我知道我可以使用 or 获取一个数组,然后将数组写回来,但我担心如果有人对行进行排序会发生什么,因为在写回数组时会弄乱东西。getValues
getDisplayValues
有什么方法可以实现我的目标吗?我希望能够处理记录,并保持行顺序以避免中断我的处理。
答:
“完全”阻止电子表格的方法是更改电子表格共享设置。删除所有编辑器或将其更改为查看器,脚本完成后,将它们更改回编辑器。在极端情况下,使用第二个帐户作为关键文件/电子表格的所有者,并且仅将其用于此目的,因此您可以阻止您的常规帐户对电子表格进行更改。
注意:Google 表单可用于编辑链接的电子表格。editResponseUrl
我面临类似的情况,但我采取了不同的方法,我使用索引/键列(您可以使用时间戳列)并使用索引/键将每个编辑的行保存到正确的位置,然后在单个操作中写入整个结果数组(通过使用)。就我而言,这很简单,因为我只需要值,我不担心注释、数据验证、条件格式、评论等,而且没有链接到我的电子表格的 Google 表单。setValues()
相关
评论