【问题标题】:Accessing HTML service form object访问 HTML 服务表单对象
【发布时间】:2017-09-10 13:35:38
【问题描述】:

我正在通过https://developers.google.com/apps-script/guides/html/communication 尝试提交包含从谷歌表格加载的信息的表单。在客户端我有(主要基于文章中的表单示例):

<!DOCTYPE html>
<html>
<head>
    <base target="_top">
    <script>
        // Prevent forms from submitting.
        function preventFormSubmit() {
          var forms = document.querySelectorAll('form');
          for (var i = 0; i < forms.length; i++) {
            forms[i].addEventListener('submit', function(event) {
              event.preventDefault();
            });
          }
        }
        //      window.addEventListener('load', preventFormSubmit);

        function handleFormSubmit(formObject) {
          google.script.run.withSuccessHandler(updateUrl).processForm(formObject);
        }
        //      function updateUrl(url) {
        //        var div = document.getElementById('output');
        //        div.innerHTML = '<a href="' + url + '">Got it!</a>';
        //      }
    </script>
</head>
<body>
    <form id="myForm" onsubmit="handleFormSubmit(this)">
        <div>
            <select id="optionList" name="email">
                <option>Loading...</option>
            </select>
        </div>
        <br>
        <div>
            <textarea name="message" rows="10" cols="30">
            The cat was playing in the garden.
            </textarea> 
        </div>
        <input type="submit" value="Submit" />
    </form>

在服务器端(code.gs)我有:

function processForm(formObject) {

  Logger.log('in here');
  var formBlob = formObject.myFile;
  var driveFile = DriveApp.createFile(formBlob);

return driveFile.getUrl();
}

我可以看到提交正在运行,因为我在日志中看到“在此处”。如何从 processForm 函数中访问表单字段?

【问题讨论】:

    标签: javascript google-apps-script


    【解决方案1】:

    这个块对我来说没有意义

      var formBlob = formObject.myFile;
    

    您的表单不包含“name”属性设置为“myFile”的输入。单击“提交”后,“formObject”变量将为:

    {
     email: "Loading...", //from <select id="optionList" name="email">
     message: "The cat was playing in the garden." //from  <textarea name="message">
    
    }
    

    【讨论】:

    • 感谢您向我展示它是如何工作的。反正有调试这个吗?我知道在使用 AJAX 时可以使用浏览器控制台。
    • 你可以在你的客户端JS函数中使用console.log(),比如'handleFormSubmit()'。在服务器端(.gs 文件),无法访问浏览器对象模型,因此您必须使用 Logger.log()。
    • 谢谢,我试试看。
    猜你喜欢
    • 2011-08-17
    • 2019-08-26
    • 1970-01-01
    • 2013-04-26
    • 2012-11-01
    • 1970-01-01
    • 2016-12-09
    • 2012-12-21
    • 2011-12-13
    相关资源
    最近更新 更多