【问题标题】:Google Apps Script Execution OrderGoogle Apps 脚本执行顺序
【发布时间】:2013-10-10 15:30:05
【问题描述】:

无法让 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() 也是如此。

提前感谢您的任何建议!

【问题讨论】:

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


    【解决方案1】:

    UI 会在您返回 app 时更新。这意味着从您的函数内部进行的任何函数调用都无法从同一函数内部看到您对 UI 所做的更改。

    您必须有不同的想法,即可能将您的代码拆分为 2 个函数,以便在调用读取其内容的函数之前返回应用程序(换句话说,更新 UI)。


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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      相关资源
      最近更新 更多