使用Google App脚本的Html表单 - 与后面的代码进行通信并显示输出

时间:2018-04-20 12:22:04

标签: javascript google-apps-script

我正在尝试设置一个小型Web应用程序项目,使Html表单能够与App脚本进行通信。我最初尝试使用doGet()和doPost():在提交HTML中的表单时自动启动doPost(),但是,最后一行,据说重定向到另一个HTML页面:Thanks.html,永远不会被命中。我问了另一个问题,有些人试图让我走向正确的方向。我尝试了另一种解决方案,剥离了所有功能,并且只是尝试使用:

google.script.run.withSuccessHandler(successHandle).returnOK();

然而,App脚本中的returnOK()函数永远不会被命中。单击该按钮时,HTML表单将消失,并且永远不会记录日志(returnOK()脚本中的第一个内容),这意味着永远不会访问该脚本。我的代码中的代码段,下面是最重要的部分。

Code.gs

function doGet() {
    var template = HtmlService.createTemplateFromFile('index');
    return template.evaluate().setSandboxMode(HtmlService.SandboxMode.NATIVE):
}

function returnOK(){
    Logger.log("ok");
    return "ok";
}

function include(filename) {
   return HtmlService.createHtmlOutputFromFile(filename).setSandboxMode(HtmlService.SandboxMode.IFRAME).getContent();
}

的index.html

<?!= include('Stylesheet'); ?>
<div id="mainDiv">
    <form id="form">
        <img src="..." /> 
        <table>...</table>
        <label>...</label> <br/>
        <div>...</div>
        <input type="button" value="Submit" onclick="submit()">
     </form>
 </div>
 <?!= include('Javascript'); ?>

Javascript.html

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.js"></script>
<script>
function submit(){
    google.script.run.withSuccessHandler(successHandle).returnOK();
}

function successHandle(e){
    var div = document.getElementById('output');
    div.innerHTML = 'Thank you';
}
</script>

1 个答案:

答案 0 :(得分:0)

使用形式为参数的函数。

下面的一个(甚至更简化的)示例(仅html部分,gs未更改):

<div id="mainDiv">
    <form id="form">
        <div id="output">response here</div>
        <input type="button" value="Submit" onclick="update(this)">
     </form>
 </div>


<script>
function update(){
    google.script.run.withSuccessHandler(successHandle).returnOK();
}

function successHandle(e){
    var div = document.getElementById('output');
    div.innerHTML = 'Thank you, answer = '+e;
}
</script>