Google apps script 我可以在两个不相关的函数中调用Lock,而一个锁不会影响另一个吗?
如果我在Google apps script 我可以在两个不相关的函数中调用Lock,而一个锁不会影响另一个吗?,google-apps-script,locking,Google Apps Script,Locking,如果我在code.gs中有两个不相关的函数(每个函数都与不同的Google工作表交互),我可以在两个函数中调用lock,而一个调用不会影响另一个吗 为了进一步了解情况,该应用程序在同一个域中有大约80个用户,正在以我的身份运行,但可能: 用户A调用myFunction_01()的同时 用户B调用myFunction\u 02() 在这种情况下,锁是否会独立运行 以下锁定的实现是否可接受 function myFunction_01() { var my_spreadsheet_01 = S
code.gs
中有两个不相关的函数(每个函数都与不同的Google工作表交互),我可以在两个函数中调用lock
,而一个调用不会影响另一个吗
为了进一步了解情况,该应用程序在同一个域中有大约80个用户,正在以我的身份运行,但可能:
- 用户A调用myFunction_01()的同时
- 用户B调用
myFunction\u 02()
锁定的实现是否可接受
function myFunction_01() {
var my_spreadsheet_01 = SpreadsheetApp.openById("YYY");
var lock = LockService.getScriptLock();
try {
lock.waitLock(30000);
} catch (e) {
Logger.log('Could not obtain lock after 30 seconds.');
var returnObjectCatchError = {};
returnObjectCatchError['LockErrorFlag'] = "An exception occurred when waiting for lock";
return returnObjectCatchError;
}
// do things with my_spreadsheet_01 here
var return_object = {};
// apply all pending spreadsheet changes
SpreadsheetApp.flush();
//release lock
lock.releaseLock();
return return_object;
}
function myFunction_02() {
var my_spreadsheet_02 = SpreadsheetApp.openById("ZZZ");
var lock = LockService.getScriptLock();
try {
lock.waitLock(30000);
} catch (e) {
Logger.log('Could not obtain lock after 30 seconds.');
var returnObjectCatchError = {};
returnObjectCatchError['LockErrorFlag'] = "An exception occurred when waiting for lock";
return returnObjectCatchError;
}
// do things with my_spreadsheet_02 here
var return_object = {};
// apply all pending spreadsheet changes
SpreadsheetApp.flush();
//release lock
lock.releaseLock();
return return_object;
}
确定的最终方法是测试它。这两个函数打开两个不同的电子表格文件,YYY
和ZZZ
,因此一个函数不可能干扰另一个电子表格。如果myFunction\u 01
和myFunction\u 02
都打开同一个电子表格,则可能发生冲突。您的变量名是active\u电子表格
,但随后您将按ID打开一个电子表格。这就是您想要给出的示例吗?即使同时调用函数1和函数2,它们也会同时独立运行,而不会被锁定。我想,如果function\u 01
和function\u 02
同时运行,并且lock
在function\u 01
运行前的一小部分时间内在function\u 02
中运行,那么它在功能中就不可用了?这种思路是基于这样一种说法,即“只有一个公共锁和一个私人锁”。因此,我只是想得到一个确定的、最新的答案,即是否可以将多个锁实例分散在多个函数中——如果不能,官方的替代方案是什么。