Я довольно новичок в использовании сценариев Google, и у меня возникают проблемы с пониманием того, как правильно использовать LockService в сценариях приложения Google, в частности в веб-приложении.В настоящее время я разрабатываю веб-приложение, которое будет доступно 25 разным пользователям, и они могут быть доступны в тот же период времени, и я хочу избежать коллизий, так как есть важная информация, которая проходит через этот скрипт.
Я уже читал о LockService и понимаю концепцию: предполагается, что разные пользователи не смогут получить доступ к части или к целому коду, включающему блокировку одновременно, верно?Но я не уверен, должен ли я реализовать это в файле .gs или в html и как.Здесь я оставляю основную часть своего кода:
INDEX
<html>
<head>
<meta name="MobileOptimized" content ="width">
</head>
<body>
<form id="customerForm">
<div id="output"></div>
<div id="signature"></div><br>
<img id="rendered" src="" style="display:none">
<input type="button" value="Enviar Firma" onclick="renderSignature();saveImage()"/> </body>
</form>
</html>
<?!= HtmlService.createHtmlOutputFromFile('JavaScript').getContent(); ?>
Сценарий для управления возвратами файлов GS
<script>
//..some code
function saveImage(e){ //This sends the image src to saveImages function
//Assign values to bytes and sign variables
};
google.script.run.withSuccessHandler(onSuccess).compare_tickets(bytes, sign);
google.script.run.withFailureHandler(onFailure).compare_tickets(bytes, sign);
}
function onSuccess(bytes){
google.script.run.saveImage(bytes)
}
function onFailure(error) {
//Throw alert with the error
}
</script>
Файл GS
function doGet(e){
return HtmlService
.createTemplateFromFile("index")
.evaluate()
.setTitle("Firme aquí por favor")
.setSandboxMode(HtmlService.SandboxMode.IFRAME);
}
function compare_tickets(bytes, sign){ //first function runned by the index
//some code that reads Some spreadsheets
}
function saveImage(bytes){ //second function runned by the index
var lock = LockService.getScriptLock();
if(lock.tryLock(10000)){
//Do operations/readings/writings on different spreadsheets in case you get the lock
lock.releaseLock();
}
else{
//Tell the user that the system is busy and should retry to send the info
}
}
Таким образом, приведенный выше код показывает, что я пытаюсь реализовать LockService для файла GS, я уже пытался получить доступ из 3 разных браузеров одновременно, но похоже, что 3 из них на самом деле работают с кодом, а некоторыеинформация потеряна, я думаю, что блокировка не работает так, как я думал.
Не могли бы вы помочь мне разобраться, как реализовать блокировки?Заранее большое спасибо.