Google Apps脚本执行订单

时间:2013-10-03 19:25:44

标签: google-apps-script google-apps-for-education

无法让GAS按照我需要的顺序执行功能。在这段代码中:

function documentUpload(e) {
  var app = UiApp.getActiveApplication();
  app.getElementById('documentValue').setText('Uploaded');
  app.getElementById('documentValueLabel').setStyleAttribute('color', 'black');
  checkSubmit(e);
  return app;
}

...在更改文本之前,它始终运行checkSubmit。这是无用的,因为checkSubmit检查的一件事是documentValue是否有文本。

我看到this post并尝试添加LockService,如下所示:

function documentUpload(e) {
  var app = UiApp.getActiveApplication();
  app.getElementById('documentValue').setText('Uploaded');
  app.getElementById('documentValueLabel').setStyleAttribute('color', 'black');
  var lock = LockService.getPrivateLock();
  lock.waitLock(10000);
  checkSubmit(e);
  lock.releaseLock();
  return app;
}

......但我没有得到任何不同的结果。 Utilities.sleep()也是一样。

提前感谢任何建议!

1 个答案:

答案 0 :(得分:0)

返回应用时,用户界面会更新。这意味着函数内部的任何函数调用都无法从同一函数内部看到您对UI所做的更改。

你必须以不同的方式思考,即可能在调用读取其内容的函数之前,将代码拆分为2个函数以允许返回应用程序(换句话说更新UI)。


编辑:当我查看您的代码时,似乎您在开始下载之前唯一要做的就是更改文本值和样式属性...如果是这样您可以使用一个将立即执行的clientHandler(see this other recent post)也许这可以解决您的问题...如果有,请告诉我们。