Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google apps script GAS脚本是否可以锁定Google工作表,以便在脚本完成之前没有其他人可以修改它_Google Apps Script_Google Sheets - Fatal编程技术网

Google apps script GAS脚本是否可以锁定Google工作表,以便在脚本完成之前没有其他人可以修改它

Google apps script GAS脚本是否可以锁定Google工作表,以便在脚本完成之前没有其他人可以修改它,google-apps-script,google-sheets,Google Apps Script,Google Sheets,我很熟悉,但这只适用于锁定脚本 我有一些代码可以“处理”一个大的谷歌表单。我的脚本需要对行重新排序。我需要/希望在脚本运行时,其他人无法更改顺序。但是,我仍然需要另一个脚本来追加行 我们使用谷歌表格作为我们团队的招生信息。它将行附加到图纸。我有一份每小时的工作,它将遍历所有行/记录并“处理它们”。我有一个列,用于存储上次“处理”记录/行的时间。我想对该列进行排序,使“最早的”记录位于顶部,然后从上到下开始处理。如果脚本失败或超时,那么下一次迭代将重新开始 我知道我可以使用getValues或ge

我很熟悉,但这只适用于锁定脚本

我有一些代码可以“处理”一个大的谷歌表单。我的脚本需要对行重新排序。我需要/希望在脚本运行时,其他人无法更改顺序。但是,我仍然需要另一个脚本来追加行

我们使用谷歌表格作为我们团队的招生信息。它将行附加到图纸。我有一份每小时的工作,它将遍历所有行/记录并“处理它们”。我有一个列,用于存储上次“处理”记录/行的时间。我想对该列进行排序,使“最早的”记录位于顶部,然后从上到下开始处理。如果脚本失败或超时,那么下一次迭代将重新开始

我知道我可以使用
getValues
getDisplayValues
获取一个数组,然后写回数组,但我担心如果有人对行进行排序,会发生什么情况,因为写回数组时会把事情弄糟


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

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

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

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

相关的


我想您可以在脚本函数的开头使用类来删除所有编辑器的访问权限,然后将这些用户添加回能够编辑的状态(或者简单地说,删除保护)在函数的末尾。@IMTheNacho您也可以使用hidden来遵循上面提到的相同的索引/键方法。@TheMaster我不知道那里有什么。我会调查的。看起来这真的很有帮助。谢谢谢谢你,鲁宾。我最终还是照你说的做了。我还使用DataStudio让人们能够查看数据,这样他们就可以在DataStudio中进行排序,而不会弄乱源数据。:)