【发布时间】:2018-02-15 14:09:55
【问题描述】:
我编写了一个简单的 Google Apps 脚本,可以连接到智能手机上的 IFTTT 并发送 SMS。现在我正在尝试通过将脚本部署为 Google Web App 来开发用户友好的界面:想法是您应该单击一个按钮,然后它应该显示“发送 SMS”并让您等待直到完成。
我认为这需要按钮代码来检查脚本是否正在运行(因此它被终止),但我无法让它工作。
这是我的设置。
在 code.gs 我有发送短信的主要功能:
var isRunning;
function execute() {
isRunning = true;
if (checkRunning() == true) {Logger.log('isRunning: TRUE')} else {Logger.log('isRunning: FALSE')}
OTHER STUFF;
isRunning = false;
if (checkRunning() == true) {Logger.log('isRunning: TRUE')} else {Logger.log('isRunning: FALSE')}
}
以及检查变量isRunning是true还是false的函数:
function checkRunning() {
if (isRunning == true) {
return true}
else {return false}
}
在我的 index.html 文件中有一个执行按钮和一个检查按钮:
<input class="button" type="button" value="Send SMS" onclick="google.script.run.execute()"/>
<input class="btncheck" type="button" value="Check running"/>
这段代码在<script></script>之间(使用Jquery):
var c;
setInterval(function() {google.script.run.withSuccessHandler(varSet).checkRunning()},1000);
function varSet(value) {c = value}
$('.btncheck').on('click', function() {
alert();
});
function alert() {
alert(c)
}
我确定execute() 函数运行了大约 15 秒。因此,如果我单击“执行”按钮,在接下来的几秒钟内,我应该能够单击“检查运行”按钮并输出 true。但它总是输出 false,因为 checkRunning() 函数返回 false。
但在脚本日志中,isRunning 变量在开始时正确设置为 true,在 execute() 结束时正确设置为 false。
有什么想法吗?
【问题讨论】:
-
为什么要这么复杂?更改按钮状态或显示某种进度微调器,当
onSuccessHandler从脚本返回时解决。 -
我使用
withSuccessHandler()来调用resetspinner() 函数而不是传递变量并且它运行良好。很简单,谢谢。
标签: javascript google-apps-script