Google apps script 阻止Google应用程序脚本并行执行

Google apps script 阻止Google应用程序脚本并行执行,google-apps-script,Google Apps Script,我有一个谷歌应用程序脚本,它是通过点击工作表上的浮动图像来执行的 如何防止人们在脚本第一次执行完成之前再次运行脚本 似乎可以通过单击图像多次执行脚本,并且后续执行与以前的执行冲突,并导致错误结果 我本来打算在脚本运行时暂时解除脚本与浮动映像的关联,然后在退出脚本之前还原它,但我似乎找不到操作浮动映像属性的方法。对于客户端处理,您可以为变量赋值以标识函数的状态 index.html <!DOCTYPE html> <html> <body> <

我有一个谷歌应用程序脚本,它是通过点击工作表上的浮动图像来执行的

如何防止人们在脚本第一次执行完成之前再次运行脚本

似乎可以通过单击图像多次执行脚本,并且后续执行与以前的执行冲突,并导致错误结果


我本来打算在脚本运行时暂时解除脚本与浮动映像的关联,然后在退出脚本之前还原它,但我似乎找不到操作浮动映像属性的方法。

对于客户端处理,您可以为变量赋值以标识函数的状态

index.html

<!DOCTYPE html>
<html>
  <body>
    <img src="http://cdn.soulsplay.com/assets//listing/css/comments/submit-button-2.png" onclick="invokeSubmit();">
  </body>
  <script>

    var image_clicked = 0;

    function invokeSubmit(){
      image_clicked ++;
      if(image_clicked == 1){
        alert("Processing");
        google.script.run.withSuccessHandler(function(){
          image_clicked = 0;
          alert("done");
        }).sleep_func();
      }
    }
  </script>
</html>
您还可以使用防止脚本并发访问


如果使用对话框或侧边栏上的按钮,可以在javascript中禁用该按钮,然后在脚本完成后使用回调函数再次启用该按钮。退房我不认为你可以用图像作为电子表格上的按钮来实现这一点。完美!!!最后一个建议,LockService,正是我所需要的。非常感谢
function doGet() {
  var output = HtmlService.createTemplateFromFile('index').evaluate();
  output.setSandboxMode(HtmlService.SandboxMode.IFRAME);
  output.setTitle('App Script');
  return output;
}

function sleep_func(){
  Utilities.sleep(15000);
  return;
}
function test_func(){
  var lock = LockService.getScriptLock();
  lock.waitLock(15000);

  //Some operations

  lock.releaseLock();
}