1

无法让 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 是否有文本。

我看到了这篇文章 并尝试像这样添加 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() 也是如此。

在此先感谢您的任何建议!

4

1 回答 1

0

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

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


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

于 2013-10-03T19:52:23.760 回答