【发布时间】:2019-08-31 08:14:07
【问题描述】:
我正在向多个用户共享一个 google 脚本表,我只是想防止同一个用户同时运行该脚本。我需要做什么?是通过代码还是仅通过设置?
【问题讨论】:
-
按代码。你可以试试
LockService
标签: google-apps-script google-sheets
我正在向多个用户共享一个 google 脚本表,我只是想防止同一个用户同时运行该脚本。我需要做什么?是通过代码还是仅通过设置?
【问题讨论】:
LockService
标签: google-apps-script google-sheets
正如@TheMaster 在评论中所说,LockService 是要走的路。具体来说,您需要LockService.getDocumentLock() 或LockService.getScriptLock(),具体取决于您的脚本的设置方式。
在 Apps Script 中如何使用锁定服务的示例:
var timeoutMs = 5000; // wait 5 seconds before giving up
var lock = LockService.getScriptLock(); // or LockService.getDocumentLock();
lock.tryLock(timeoutMs);
try {
if (!lock.hasLock()) {
var msg = 'Skipped execution after ' + (timeoutMs / 1000).toString() + ' seconds; script already running.';
console.log(msg);
try {
// If script is being run from a user UI context (ex: from a Menu option),
// gracefully alert the user we gave up
SpreadsheetApp.getUi().alert(msg);
} catch (e2) {}
} else {
//*** ADD CODE YOU WANT TO PROTECT HERE
}
} catch (e) {
console.error(e);
try {
var ui = SpreadsheetApp.getUi();
ui.alert("Error", e ? e.toString() : e, ui.OK);
} catch (e2) {}
}
SpreadsheetApp.flush();
lock.releaseLock();
【讨论】: