Google App脚本和公共锁定

时间:2017-10-15 08:40:13

标签: google-apps-script

我有一个电子表格,我有一个doGet()一个doPost()以及一个定时触发器来进行一些更新。我希望这些能够相互阻挡。是的LockService ......希望如此。

LockService上的Google文档未记录getPublicLock()方法,似乎无法找到符合我需求的任何内容。上面的文档确实说getDocumentLock()将在一个特别有用的Web应用程序中返回null,并且互联网上的一般帖子表明它将停止并发运行的代码...这不是不是我想要的。我想要的是在数据更新时停止数据请求。

我试过测试它,但我似乎无法让脚本运行足够长的时间来测试这个让我满意。

如果我使用:

var lock = LockService.getPublicLock();
lock.waitLock(30000);

在所有3个入口点中,当调用任何其他调用时,脚本是否会成功锁定?

1 个答案:

答案 0 :(得分:2)

我没有在Google-Apps-Script中遇到过LockService.getPublicLock()。

但是LockService.getScriptLock()应该可以工作。正如文档所述:

  

获取一个锁,阻止任何用户同时运行一段代码。无论用户的身份如何,都不能同时执行由脚本锁保护的代码段。请注意,在调用Lock.tryLock(timeoutInMillis)或Lock.waitLock(timeoutInMillis)之前,实际上不会获取锁。

我特别使用它与Web App,并且据我测试它,它按照承诺的方式工作:

当使用该应用程序的任何人在脚本中保留了一个Script Lock时,对于任何用户,Script Lock锁定的任何其他块都不会执行。

我会将此作为评论添加,但我无权发表评论..

相关问题