HtmlService Spreadsheet表单刷新

时间:2015-12-02 22:42:36

标签: google-apps-script

我在Google表格上有一个表格ModalForm,可以在表格中插入行。它已经好几个月了。从提交表格后的上周开始,表格消失,不会重新显示。我不确定为什么。它可以很好地执行插入到电子表格中。我只是从来没有得到表格回来插入下一条记录。

在我的索引文件中,表单代码为:

<form id="myReceiveForm" name="receive" onsubmit="writeLine()">
  Scanner Name : <input id="user" name="user" type="text" required  /> <br> <br>
  Reference Number: <input id="reference" name="reference" type="text" required  /> <br> <br>
  Location:         <input id="location" name="location" type="text" pattern="[A-Z]{1,3}\-[A-Z]{1,2}\-\d{1,3}\-\d{1,2}" title="Location not in correct format." required/> 
  <button type="button" value="change" onclick="changeLocation()" >Change Location</button><br> <br>
  Product SKU:      <input id="sku" name="sku" type="text" value="" autofocus /> <br> <br> 
                    <input type="submit" value="Submit" >
</form>

<script type="text/javascript">


function onSuccess() {

    document.getElementById("sku").value = '';
    document.getElementById("sku").focus();
    return false;

}

function onFailureM(error) {

     alert("Invalid Sku");
    //alert("SKU" + document.getElementById("sku ").value +" doesn't exist.");
     document.getElementById("sku").value = '';
    document.getElementById("sku").focus();

}


window.writeLine = function () {


 google.script.run
   .withSuccessHandler(onSuccess)
   .withFailureHandler(onFailureM)
   .appendRowstoSheet(document.forms[0]);
} 

</script>

在我的.gs文件中:

function openReceiving() {
  var html = HtmlService.createHtmlOutputFromFile('index');
           SpreadsheetApp.getUi().showModalDialog(html, '3PL RECEIVING');

1 个答案:

答案 0 :(得分:2)

从上表单标记中删除onsubmit="writeLine()"。更改提交按钮:

<input type="submit" value="Submit" >

到带有事件的常规按钮:

<input type="button" value="Submit" onmouseup="writeLine()">

这应该可以解决问题。 2015年11月12日,Google迁移到IFRAME模式。

  

除非明确指定了NATIVE模式,否则所有新脚本都将默认为IFRAME沙盒模式。

Google Apps Script Sunset Scedule

这可能是您的问题所在。表单提交会导致表单标记消失。这是常规HTML中长期存在的预期行为。但很长一段时间,HTML服务覆盖了这种行为。现在,IFRAME模式更像是常规的HTML行为。

在SKU输入字段中,如果您需要在更新最后一个字段后提交表单,请尝试添加onchange属性:

<input id="sku" name="sku" type="text" value="" autofocus onchange="writeLine()"/>

onchange Event - Reference information

List of all the events