一旦 ui.alert 被注释掉,模态对话框无法在提交时关闭
Modal Dialog fails to close on submission once ui.alert is Commented out
为什么 ui.alert 的注释会导致模态对话框的提交在提交时无法关闭?这些功能实际上仍然在做它们应该做的事情,但对话框不会消失;你必须点击关闭按钮。我一直在使用警告框来解决我的工作,现在当我将它们注释掉时,我发现有一个我不能,而不会产生这个问题。
有问题的行是此处唯一注释掉的行:
function getStartFromDialog (form) {
scriptProperties.getProperties();
var option1 = scriptProperties.getProperty('savedOption1');
var option2 = scriptProperties.getProperty('savedOption2');
var eRow = scriptProperties.getProperty('savedRow');
var tabName = scriptProperties.getProperty('savedTab');
var start = form.chosenStart;
// ui.alert ('Chosen option is '+ start);
if (start == 'option1'){var adjustedStart = option1}
else {var adjustedStart = option2}
reactToUserEntryOfStart (adjustedStart,eRow);
}
这里是 index.htm 文件:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
<script>
function submitForm() {
google.script.run.getStartFromDialog(document.getElementById("startChoiceForm"));
document.getElementById("form").style.display = "none";
}
</script>
</head>
<body>
<div>
<div id="form">
<? var offeredStart1 = offeredStarts[0]; var offeredStart2 = offeredStarts[1] ?>
<form id="startChoiceForm">
<select name="chosenStart" id ="chosenStart">
<option value="option1"><?= offeredStart1 ?></option>
<option value="option2"><?= offeredStart2 ?></option>
</select>
<div>
<input type="submit" value="Submit" class="action" onclick="submitForm()" >
<input type="button" value="Close" onclick="google.script.host.close()" >
</div>
</form>
</div>
</body>
</html>
This video 演示:
- 功能正常;
- 我注释掉那行 ui.alert ('Chosen option is '+ start);
- 同样的程序;现在对话框挂起。
脚本允许用户在 testUserEntTime!A3:A 中输入时间,无需键入冒号或指定 AM/PM,即 325 代表 3:25am 或 3:25pm。它会自动将这些条目转换为日期时间值,以便它们始终从上到下顺序排列,不允许任何日期时间早于前一个。
输入与上面的时间相同小时但更早分钟的时间会触发该对话框。
在视频中,之前的时间是 4:55 am 9/5/2001(格式化后只显示时间),我输入 450。这导致脚本询问我是否打算指示 4:50pm,或 4:50am 第二天,9 月 6 日。
感谢您的帮助;我很困惑。
当我看到您的示例电子表格和您当前的脚本时,在您的情况下,进行以下修改如何?
发件人:
google.script.run.getStartFromDialog(document.getElementById("startChoiceForm"));
收件人:
google.script.run.withSuccessHandler(google.script.host.close).getStartFromDialog(document.getElementById("startChoiceForm"));
- 当函数
getStartFromDialog
中使用 ui.alert ('Chosen option is '+ start);
时,对话框会被 ui.alert
覆盖。这样,当单击确定按钮时,对话框将关闭。当您想通过单击提交按钮关闭对话框时,google.script.host.close
是 运行 使用 withSuccessHandler
。
参考:
为什么 ui.alert 的注释会导致模态对话框的提交在提交时无法关闭?这些功能实际上仍然在做它们应该做的事情,但对话框不会消失;你必须点击关闭按钮。我一直在使用警告框来解决我的工作,现在当我将它们注释掉时,我发现有一个我不能,而不会产生这个问题。
有问题的行是此处唯一注释掉的行:
function getStartFromDialog (form) {
scriptProperties.getProperties();
var option1 = scriptProperties.getProperty('savedOption1');
var option2 = scriptProperties.getProperty('savedOption2');
var eRow = scriptProperties.getProperty('savedRow');
var tabName = scriptProperties.getProperty('savedTab');
var start = form.chosenStart;
// ui.alert ('Chosen option is '+ start);
if (start == 'option1'){var adjustedStart = option1}
else {var adjustedStart = option2}
reactToUserEntryOfStart (adjustedStart,eRow);
}
这里是 index.htm 文件:
<!DOCTYPE html>
<html>
<head>
<base target="_top">
<link rel="stylesheet" href="https://ssl.gstatic.com/docs/script/css/add-ons1.css">
<script>
function submitForm() {
google.script.run.getStartFromDialog(document.getElementById("startChoiceForm"));
document.getElementById("form").style.display = "none";
}
</script>
</head>
<body>
<div>
<div id="form">
<? var offeredStart1 = offeredStarts[0]; var offeredStart2 = offeredStarts[1] ?>
<form id="startChoiceForm">
<select name="chosenStart" id ="chosenStart">
<option value="option1"><?= offeredStart1 ?></option>
<option value="option2"><?= offeredStart2 ?></option>
</select>
<div>
<input type="submit" value="Submit" class="action" onclick="submitForm()" >
<input type="button" value="Close" onclick="google.script.host.close()" >
</div>
</form>
</div>
</body>
</html>
This video 演示:
- 功能正常;
- 我注释掉那行 ui.alert ('Chosen option is '+ start);
- 同样的程序;现在对话框挂起。
脚本允许用户在 testUserEntTime!A3:A 中输入时间,无需键入冒号或指定 AM/PM,即 325 代表 3:25am 或 3:25pm。它会自动将这些条目转换为日期时间值,以便它们始终从上到下顺序排列,不允许任何日期时间早于前一个。
输入与上面的时间相同小时但更早分钟的时间会触发该对话框。 在视频中,之前的时间是 4:55 am 9/5/2001(格式化后只显示时间),我输入 450。这导致脚本询问我是否打算指示 4:50pm,或 4:50am 第二天,9 月 6 日。
感谢您的帮助;我很困惑。
当我看到您的示例电子表格和您当前的脚本时,在您的情况下,进行以下修改如何?
发件人:
google.script.run.getStartFromDialog(document.getElementById("startChoiceForm"));
收件人:
google.script.run.withSuccessHandler(google.script.host.close).getStartFromDialog(document.getElementById("startChoiceForm"));
- 当函数
getStartFromDialog
中使用ui.alert ('Chosen option is '+ start);
时,对话框会被ui.alert
覆盖。这样,当单击确定按钮时,对话框将关闭。当您想通过单击提交按钮关闭对话框时,google.script.host.close
是 运行 使用withSuccessHandler
。