首页 > 解决方案 > 如何防止多个用户在 Google 表格中同时运行 Google Apps 脚本代码?

问题描述

我正在向多个用户共享一个谷歌脚本表,我只是想防止同一个用户同时运行脚本。我需要做什么?是通过代码还是仅通过设置?

标签: google-apps-scriptgoogle-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();

推荐阅读