即使返回下一个函数,我的Google脚本功能仍保持运行。
总而言之,我有一个函数(nightTargetSelection)调用了另一个函数(dayStart)。而且,当第二个函数被调用时,我希望第一个函数停止运行。
我已经删除了该函数,并删除了与该帖子无关的所有内容。但是,如果您需要更多信息,请告诉我。
首先,我通过GS中的以下代码调用用户输入表单:
function roleWakeUp (roleName, j){
var roleStrAppend = "<div id='id_role_name' style='display:none;'>" + roleName + "</div>";
var jAppend = "<div id='id_j' style='display:none;'>" + j + "</div>";
var actionInputDlg = HtmlService.createHtmlOutputFromFile('night')
.setSandboxMode(HtmlService.SandboxMode.IFRAME)
.setWidth(600)
.setHeight(425);
var wakeUpText = roleName + " wakes up."
actionInputDlg.append(roleStrAppend).append(jAppend);
SpreadsheetApp.getUi().showModalDialog(actionInputDlg, wakeUpText);
}
然后我有一个用户通过HTML / JS提交的表单:
<script>
selected = select.options[select.selectedIndex].value
google.script.run.withSuccessHandler(selected).nightTargetSelection(selected);
google.script.host.close();
</script>
回到GS,我有了nightTargetSelection(我需要帮助修复的有问题的功能)
function nightTargetSelection (selected){
return dayStart();
}
最后,我有了在nightTargetSelection中调用的dayStart函数。
function dayStart() {
Browser.msgBox("DAY START");
//If I do not close the msgBox within 6 minutes (GS timeout period), then nightTargetSelection times out.
roleWakeUp (roleName, j);
}
我希望一经调用dayStart,nightTargetSelection函数就会停止运行。
不幸的是,这没有发生,仅当下一个nightTargetSelection被调用时,nightTargetSelection函数才会完成。
如您所见,dayStart函数调用roleWakeUp,使其在函数之间循环。我已经省略了将循环详细信息包含到此问题中,因为我不认为这是相关的。让我知道是否相关,我将提供更多详细信息。
答案 0 :(得分:0)
我不知道这是否是你的问题,但这是
anList = ['aba', 'baa', 'aab', 'cat', 'tac', 'act', 'sos', 'oss']
anDict = {}
for i in anList:
in_dict = False
for j in anDict.keys():
if sorted(i) == sorted(j):
in_dict = True
anDict[j].append(i)
break
if not in_dict:
anDict[i] = []
.withSuccessHandler(函数名或匿名函数)
答案 1 :(得分:0)
是的,因为nightTargetSelection()
直到它调用的所有进程都完成或超时才终止。
好像循环的结尾是Browser.msgBox("DAY START");
。因此,让您的服务器代码完成执行,然后使用.withSuccessHandler()
通过客户端脚本调用roleWakeUp()
。
(我真的不知道您的代码在做什么。鉴于您提供的信息,nightTargetSelection()
似乎是不必要的。因此下面的示例是向您展示流程的抽象。)
客户端脚本
<script>
function yourOriginal() {
selected = select.options[select.selectedIndex].value;
google.script.run
.withSuccessHandler(restartCycle) // Calls restartCycle() after nightTargetSelection() finishes
.nightTargetSelection(selected);
google.script.host.close();
}
function restartCycle(values) {
google.script.run.roleWakeUp(values.roleName, values.j);
}
</script>
服务器端脚本
function roleWakeUp(roleName, j) {
// opens the dialog
}
function nightTargetSelection(selected) {
return dayStart();
}
function dayStart() {
Browser.msgBox("DAY START");
return {"roleName": roleName, "j": j}; // Pass these values to client-side script
}