无法让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()也是一样。
提前感谢任何建议!
答案 0 :(得分:0)
当返回应用时,用户界面会更新。这意味着函数内部的任何函数调用都无法从同一函数内部看到您对UI所做的更改。
你必须以不同的方式思考,即可能在调用读取其内容的函数之前,将代码拆分为2个函数以允许返回应用程序(换句话说更新UI)。
编辑:当我查看您的代码时,似乎您在开始下载之前唯一要做的就是更改文本值和样式属性...如果是这样您可以使用一个将立即执行的clientHandler(see this other recent post)也许这可以解决您的问题...如果有,请告诉我们。