How to send data from HTML form to Google Spreadsheet using JavaScript?

前端 未结 1 399
闹比i
闹比i 2020-11-29 11:12

I\'m trying to build a webapp that records datas from a form in a Google Spreadsheet. To do this, I have to use JavaScript (JSON or AJAX requests will work

相关标签:
1条回答
  • 2020-11-29 11:27

    A simple spreadsheet contained web app example

    $(function() {
            $('#btn1').click(validate);
            $('#txt4').val('');
            $('#txt3').val('');
            $('#txt2').val('');
            $('#txt1').val('')
          });
    function validate()
    {
        var txt1 = document.getElementById('txt1').value || ' ';
        var txt2 = document.getElementById('txt2').value || ' ';
        var txt3 = document.getElementById('txt3').value || ' ';
        var txt4 = document.getElementById('txt4').value || ' ';
        var a = [txt1,txt2,txt3,txt4];
        if(txt1 && txt2 && txt3 && txt4)
        {
          google.script.run
            .withSuccessHandler(setResponse)
            .getData(a);
            return true;
        }
        else
        {
          alert('All fields must be completed.');
        }
    }
    

    The entire example:

    The HTML:

    <!DOCTYPE html>
    <html>
      <head>
        <base target="_top">
      </head>
      <body>
      <div id="data">
        <br />Text 1<input type="text" size="15" id="txt1" />
        <br />Text 2<input type="text" size="15" id="txt2" />
        <br />Text 3<input type="text" size="15" id="txt3" />
        <br />Text 4<input type="text" size="15" id="txt4" />
        <br /><input type="button" value="submit" id="btn1" />
      </div>
      <div id="resp" style="display:none;">
        <h1>Response</h1>
        <p>Your data has been received.</p>
      </div>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
        <script>
          $(function() {
            $('#btn1').click(validate);
            $('#txt4').val('');
            $('#txt3').val('');
            $('#txt2').val('');
            $('#txt1').val('')
          });
    
          function setResponse(a)
          {
            if(a)
            {
              $('#data').css('display','none');
              $('#resp').css('display','block');
            }
          }
    
          function validate()
          {
            var txt1 = document.getElementById('txt1').value || ' ';
            var txt2 = document.getElementById('txt2').value || ' ';
            var txt3 = document.getElementById('txt3').value || ' ';
            var txt4 = document.getElementById('txt4').value || ' ';
            var a = [txt1,txt2,txt3,txt4];
            if(txt1 && txt2 && txt3 && txt4)
            {
              google.script.run
                .withSuccessHandler(setResponse)
                .getData(a);
                return true;
            }
            else
            {
              alert('All fields must be completed.');
            }
          }
    
          function loadTxt(from,to)
          {
              document.getElementById(to).value = document.getElementById(from).value;
          }
    
         console.log('My Code');
       </script>
      </body>
    </html>
    

    The Apps Script:

    function getData(a)
    {
      var ts = Utilities.formatDate(new Date(), "GMT-6", "yyyy-MM-dd' 'HH:mm:ss");
      a.push(ts);
      SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Login').appendRow(a);
      return true;
    }
    
    function doGet()
    {
      var html = HtmlService.createHtmlOutputFromFile('index');
      return html.setXFrameOptionsMode(HtmlService.XFrameOptionsMode.ALLOWALL)
    
    }
    

    My simple spreadsheet:

    The good news is that you're probably a lot better at using the Google Chrome debugger now than before you started.

    0 讨论(0)
提交回复
热议问题