阻止Google App脚本并行执行

时间:2017-10-25 17:17:45

标签: google-apps-script

我有一个Google App脚本,通过单击工作表上的浮动图像来执行。

如何在第一次执行完成之前阻止人们运行脚本AGAIN?

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

我会暂时将脚本与浮动图像取消关联,然后在运行a然后在退出脚本之前将其恢复,但我似乎无法找到操纵浮动图像属性的方法。

1 个答案:

答案 0 :(得分:3)

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

<强>的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>

<强> code.gs

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;
}

您还可以使用Lock Service阻止脚本进行并发访问。

function test_func(){
  var lock = LockService.getScriptLock();
  lock.waitLock(15000);

  //Some operations

  lock.releaseLock();
}