请参阅: 类锁定
互斥锁的表示。此类允许脚本确保一次只有一个脚本实例在执行给定的代码段。这对于回调和触发器特别有用,其中用户操作可能会导致对共享资源的更改,并且您希望确保不会发生冲突。以下示例展示了如何在表单提交处理程序中使用锁。
// Generates a unique ticket number for every form submission.
function onFormSubmit(e) {
var targetCell = e.range.offset(0, e.range.getNumColumns(), 1, 1);
// Get a public lock on this script, because we're about to modify a shared resource.
var lock = LockService.getPublicLock();
// Wait for up to 30 seconds for other processes to finish.
lock.waitLock(30000);
var ticketNumber = Number(ScriptProperties.getProperty('lastTicketNumber')) + 1;
ScriptProperties.setProperty('lastTicketNumber', ticketNumber);
// Release the lock so that other processes can continue.
lock.releaseLock();
targetCell.setValue(ticketNumber);
}
如果没有 LockService,如果两个用户几乎同时提交表单,则票号可能最终相同,因为 lastTicketNumber 属性在从 ScriptProperties 读取之后但在新值写回之前可能会发生变化。
以上内容是从新的和改进的文档中复制的。