一旦 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 演示:

  1. 功能正常;
  2. 我注释掉那行 ui.alert ('Chosen option is '+ start);
  3. 同样的程序;现在对话框挂起。

脚本允许用户在 testUserEntTime!A3:A 中输入时间,无需键入冒号或指定 AM/PM,即 325 代表 3:25am 或 3:25pm。它会自动将这些条目转换为日期时间值,以便它们始终从上到下顺序排列,不允许任何日期时间早于前一个。

输入与上面的时间相同小时但更早分钟的时间会触发该对话框。 在视频中,之前的时间是 4:55 am 9/5/2001(格式化后只显示时间),我输入 450。这导致脚本询问我是否打算指示 4:50pm,或 4:50am 第二天,9 月 6 日。

感谢您的帮助;我很困惑。

YouTube video demonstrating bug

当我看到您的示例电子表格和您当前的脚本时,在您的情况下,进行以下修改如何?

发件人:

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

参考: