【问题标题】:How do I prevent multiple users from running Google Apps script code at the same time in a Google Sheet?如何防止多个用户在 Google 表格中同时运行 Google Apps 脚本代码?
【发布时间】:2019-08-31 08:14:07
【问题描述】:

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

【问题讨论】:

  • 按代码。你可以试试LockService

标签: google-apps-script google-sheets


【解决方案1】:

正如@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();

【讨论】:

  • 非常感谢您的精彩回答。这正是我想要的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-27
  • 1970-01-01
  • 1970-01-01
  • 2013-04-11
  • 1970-01-01
相关资源
最近更新 更多