HTML表单未运行(withSuccessHandler)函数

时间:2018-11-25 05:45:03

标签: html google-apps-script

我在Google App脚本(表格)中有此HTML表单,该表单要求用户提供日期值,然后提交该值。 HTML表单运行。唯一的问题是obj不记录。我不知道为什么会这样。

HTML:

<!DOCTYPE html>
<html>
  <head>
    <base target="_top">
  </head>
  <body>
   <form id="myForm">

    <input type="date" name="startDate" value="" id="demo" >
    <input type="button" style="font-family: verdana;" value="Submit" onclick="getStartDate()">

   </form> 
    <script>
  function success(msg) {
    alert(msg);
  }

  function getStartDate(){
    var form = document.getElementById("myForm").elements;
    var obj ={};
    for(var i = 0 ; i < form.length ; i++){
        var item = form.item(i);
        obj[item.name] = item.value;
    }
    google.script.run
    .withSuccessHandler(success)
    .getStartDate(obj);

    google.script.host.close();
  };
  </script>
  </body>
</html>

JavaScript:

function getStartDate(obj){
  Logger.log(obj)
}

这应该输出对象,但是不会。

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

此修改如何?

修改点:

  • google.script.run通过异步处理工作。因此,在您的脚本中,getStartDate()success()由于google.script.host.close()而无法运行。
  • GAS端的
  • getStartDate()不返回值。因此alert(msg)显示为undefined

当以上几点反映到您的脚本中时,它如下所示。

修改后的脚本:

HTML:

请按如下所示修改Javascript。

function success(msg) {
  alert(JSON.stringify(msg)); // Modified
}

function getStartDate(){
  var form = document.getElementById("myForm").elements;
  var obj ={};
  for(var i = 0 ; i < form.length ; i++){
    var item = form.item(i);
    obj[item.name] = item.value;
  }
  google.script.run
  .withSuccessHandler(function(e) { // Modified
    success(e);
    google.script.host.close();
  })
  .getStartDate(obj);
};
加油站:
function getStartDate(obj){
  Logger.log(obj)
  return obj; // Modified
}

注意:

  • 如果要将密钥提供给Submit,请将name添加到<input type="button" style="font-family: verdana;" value="Submit" onclick="getStartDate()">
  • 当然,您也可以将google.script.host.close()移至success()

参考:

如果这不是您想要的,请告诉我。我想修改它。