无法让 GAS 按照我需要的顺序执行函数。在此代码中:
function documentUpload(e) {
var app = UiApp.getActiveApplication();
app.getElementById('documentValue').setText('Uploaded');
app.getElementById('documentValueLabel').setStyleAttribute('color', 'black');
checkSubmit(e);
return app;
}
。它总是在更改文本之前运行检查提交。这是无用的,因为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() 也是如此。
提前感谢您的任何建议!
返回应用程序时,UI 会更新。这意味着来自函数内部的任何函数调用都无法看到从同一函数内部对 UI 所做的更改。
您必须以不同的方式思考,即可能将您的代码拆分为 2 个函数以允许在调用读取其内容的函数之前返回应用程序(换句话说,更新 UI)。
编辑:当我查看您的代码时,似乎您在开始下载之前唯一想做的就是更改文本值和样式属性......如果是这样,您可以使用将立即执行的clientHandler(请参阅最近的另一篇文章),也许这可以解决您的问题...如果确实如此,请告诉我们。