我的html表单使用Google脚本将数据上传到电子表格。我使用以下功能来防止冲突,因为许多用户正在访问Web应用程序页面:
function lockservice() {
var lock = LockService.getScriptLock();
lock.waitLock(30000);
lock.releaseLock();
}
我还有另一个脚本来检索数据(单独的脚本),也有许多用户正在访问它。那我还需要getscriptlock
吗?
换句话说,在获取数据或仅在上传数据时,用户之间会发生冲突吗?或在两种情况下都可以。
如果您通过以下方式将数据写入电子表格:
sheet.appendRow(array);
那么您就不需要锁定服务来写数据了。如果您使用的是:
sheet.getRange().setValues(array_2_D);
那么您确实需要锁定服务。
因此,appendRow()
是“原子的”,而setValues()
不是。原子表示每个操作都完全独立于彼此运行。
https://developers.google.com/apps-script/reference/spreadsheet/sheet?hl=en#appendRow(Object)
如果您有并发用户,则获取值应使用锁定服务。并发用户也有配额限制。 “同时执行”的限制为30(在发布此信息时)
https://developers.google.com/apps-script/guides/services/quotas#current_limitations