繁体   English   中英

将变量从谷歌脚本传递到HTML对话框

[英]Passing variable from google script to html dialog

我正在努力尝试在有人没有输入值的情况下做一些错误提示。 在这种情况下,我检查值是否为空,并最终检查它是否是一个日期。

所以当这里是倒下。

1)运行if语句,如果值为true,则使用字符串参数运行错误提示

if (sheetData[4] === ""){
  errorPrompt("Title");
}

2)使用字符串参数运行以下函数。 然后我希望函数将参数传递给html iframe。

function to open dialog
function errorPrompt(missvar) {
  var missVar = "test";
  var html = HtmlService.createHtmlOutputFromFile('missingvar')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showModalDialog(html, missVar + ' is Missing please provide ' + missVar + " and try again.");
}

3)然后该变量应传递给html文件,该文件显示为模态对话框。 如果字符串等于“标题”,则对话框应显示为:“ 标题丢失。请输入标题并重试。”

missingvar.html

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>            
        <script>
        UI.getElementById("missVar").innerHTML;
        </script>

       The <var id=missVar></var> is missing. Please enter <var id=missVar></var> and try again.
    <input type="button" value="Close"
        onclick="google.script.host.close()" />

  </body>
</html>

上面的HTML显示,但missVar没有显示。 有人有什么想法? 只是要注意,对话框的标题栏正确显示变量,但这是在html之外。

HTML服务:模板化HTML

如果要执行所描述的操作,请使用HtmlService模板。 它删除了客户端的JS,并提供完整形成的对话框, missVar完好无损。

var html = HtmlService.createTemplateFromFile(missingVar);

    html.missingVar = missVar;

var htmlOutput = html.evaluate();

然后,您的missingvar.html文件将包含

<?= missingVar ?>

您想要显示该变量的任何地方。

我改变了创建提示的方式。 js文件不再需要,因为js动态创建它。

function errorPrompt(missvar) {
  var missVar = "test";
  var html = HtmlService.createHtmlOutputFromFile('missingvar')
      .setSandboxMode(HtmlService.SandboxMode.IFRAME);
  SpreadsheetApp.getUi() // Or DocumentApp or FormApp.
      .showModalDialog(html, missVar + ' is Missing please provide ' + missVar + " and try again.");
}

function errorPrompt(missvar) {
  var missVar = "test";
   var htmlOutput = HtmlService
     .createHtmlOutput('<p>' + missVar + ' is missing, please enter a ' +  missVar + ' and try again.</p>')
     .setSandboxMode(HtmlService.SandboxMode.IFRAME)
     .setWidth(250)
     .setHeight(300);
 SpreadsheetApp.getUi().showModalDialog(htmlOutput, missVar + ' is missing. Please provide a ' + missVar + ' and try again.');
}

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM