用 HTML 填充 GAS ModalDialog 框 - 没有白色?选择?

Fill GAS ModalDialog box with HTML - no white ? Alternative?

对于 Google 电子表格,是否有替代 showModalDialog 的方法?我愿意学习新软件。轻功老师学什么软件比较合适?

我在 Google 电子表格中为我的学生制作了一个 Connect 4 游戏。随机问题是从带有菜单项的各种选项卡中提取的,我想要一个漂亮的问题显示。 showModalDialog 和 HTML 中可能存在维度。我通过在 BODY 和 DIV 中或仅在 DIV 中添加维度来使它复杂化。对话框总是有一些白色显示并且 HTML 经常弹出滚动条(非常难看)。可能需要比 Google App Script 更强大的东西来创建问题的清晰显示。有人会建议什么?

这是html:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
    <style> 
       #parent {
         background-color: #99ec46; 
     /*  border: 5px solid #58a30d;  /*only shows on top & left sides?????  */ 
     /*  border-radius: 10px; */
         display:table;
         font-family:Georgia, Cambria, Times New Roman, Times, serif;
         font-size: 100%;
         height: 100%;
     /*       left: 50%; */
         margin: auto; 
         padding: 0;
         position: fixed;
         text-align:center;
     /*        top: 50%; */
         width: 100%;
       }
       #child {
     /*    align-items:center;  */
         display: table-cell;
     /*    justify-content:center; */
         padding: 55px 55px;
     /*    transform: translate(-50%, -50%); */
     /*    z-index: 99999; */
         vertical-align: middle;
       }
       input[type=button], input[type=submit], input[type=reset] {
         background-color: #438204;
         border: none;
         color: white;
         padding: 10px 26px;
         text-decoration: none;
         margin: 4px 2px;
         cursor: pointer;
       }
    </style>

  </head>
  <body> 
    <div id="parent">
      <div id="child">
        <?!= nextQuestion ?>
        <p></p>     
        <input type="button" value="Okay!" onclick="google.script.host.close()" />
      </div>
    </div>   
  </body>
</html>

这是显示问题的代码。有些问题很长,并且有 html 标记出现在多行 (

)。

/**
 * Displays an HTML-service dialog in Google Sheets that contains
 */
function popupNextQ(inQuestion) {

//  var html = HtmlService.createHtmlOutputFromFile('Index');

  var htmlTemplate = HtmlService.createTemplateFromFile('Next-Question-Popup');
  htmlTemplate.nextQuestion = inQuestion;
  var html = htmlTemplate.evaluate();
//            .setHeight(400)
//            .setWidth(600);
  SpreadsheetApp.getUi().showModalDialog(html, " ");  
}

这是迄今为止我想到的最好的。如果我向 html 添加边框,它只会出现在顶部和左侧。至少在当前尺寸下,我最长的问题没有滚动条。

问题未垂直对齐,因此较短的问题出现在绿色区域的顶部。

Alan Wells 在 googlegroups.com 中写道,您无法摆脱对话框边缘周围的白色 space。如果您想继续使用 Google 产品并想要替代品,则需要为您的应用使用 Apps Script Web App。

他建议使用 Web 应用程序创建问题框,而不是从 sheet 上的菜单触发。

我发现的嵌套 CSS 已经解决了所有文本出现在顶部的问题。

我终于找到了一种在 html 的所有边上添加边框的方法。 将边框放在父级中会导致它显示在顶部和左边。将它放在子项中会使其显示在顶部、底部和左侧。底部边框在绿色方块的中间 - 不在底部。

诀窍是将父 div 的大小从 100% 减小到 97%。我也试过99%和98%。您的边框宽度可能会影响您必须减少的量。

<style> 
       #parent {
         background-color: #99ec46;
         display:table;
         font-family:Georgia, Cambria, Times New Roman, Times, serif;
         font-size: 100%;
         height: 97%;
         margin: auto; 
         padding: 0;
         position: fixed;
         text-align:center;
         width: 97%;
       }
       #child {
         border: 5px solid #58a30d; 
         border-radius: 10px; 
         display: table-cell;
         padding: 55px 55px;
         vertical-align: middle;
       }

还要感谢 googlegroups 中的 Clark Lind 建议使用幻灯片而不是传播sheet。幻灯片也仅限于使用 showModalDialog.

显示 html