如果我的脚本有很多用户,是否需要LockService getScriptLock

问题描述 投票:1回答:1

我的html表单使用Google脚本将数据上传到电子表格。我使用以下功能来防止冲突,因为许多用户正在访问Web应用程序页面:

function lockservice() {
  var lock = LockService.getScriptLock();
  lock.waitLock(30000);
  lock.releaseLock();
}

我还有另一个脚本来检索数据(单独的脚本),也有许多用户正在访问它。那我还需要getscriptlock吗?

换句话说,在获取数据或仅在上传数据时,用户之间会发生冲突吗?或在两种情况下都可以。

google-apps-script google-sheets concurrency atomic
1个回答
0
投票

如果您通过以下方式将数据写入电子表格:

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

© www.soinside.com 2019 - 2024. All rights reserved.