HTML表单数据到Google电子表格

时间:2016-01-04 23:29:23

标签: javascript html forms google-sheets google-spreadsheet-api

我查看了各种先前发布的关于使用JavaScript将HTML表单数据提交到Google电子表格的条目。但是,自从之前的帖子以及<input> entries work的方式以来,Google电子表格发生了很大变化,因此我不确定如何让我的表单写入Google电子表格。我基本上遵循了这个URL的解决方案。我的代码如下。有人有关于如何解决的建议吗?问题在于缺少输入字段。我的表单只有一个id = firstname和id = lastname,所以非常简单地开始简单。提前感谢您的光临。

<html>
<head>
<script>
    $('#emailForm').one('submit',function(){
    var inputField = encodeURIComponent($('#emailForm').val());
    var baseURL = 'https://docs.google.com/a/google.com/forms/d/1RZYnGjYAMjl6LMXLdsWZgb9S3NqXZSO000tD2eObhLc/formResponse';
    var submitRef = '&submit=Submit';
    var submitURL = (baseURL + emailAddress + submitRef);
    $(this)[0].action=submitURL;
    $('#email').addClass('active').val('Thank You!');
setTimeout(function(){
  $('#form-container').hide();
  $('#update-form').animate({'width': '0px'},300,function(){
        $('#get-updates-link').hide();
          $('#email-submit').addClass('active').val('Thank You!');
      });
    },1000);
</script>
</head>
<body>

<form id="emailForm" action="https://docs.google.com/a/google.com/forms/d/1RZYnGjYAMjl6LMXLdsWZgb9S3NqXZSO000tD2eObhLc/formResponse">

  <input id="firstname" type="text" placeholder="enter firstname" name="firstname">
  <input id="lastname" type="text" placeholder="enter lastname" name="lastname">
  <button id="email-submit" type="submit">Submit</button>
</form>


</body>
</html>

2 个答案:

答案 0 :(得分:1)

你这样做的方式很有趣,但有更好的方法。要使您当前的策略有效,您需要创建一个与您的数据相匹配的Google表单。你不需要这样做。最好创建一个独立的应用程序脚本Web应用程序,其中包含doPost(e)功能。 doPost(e)函数可以捕获HTTP请求有效负载,并在调用Apps脚本Web应用程序URL时运行doPost(e)函数。 e参数将从POST请求中捕获有效内容数据。

你可以看看像这样的stackoverflow问题:

Call a custom Apps Script function from external url

答案 1 :(得分:0)

以下是我在Google Apps脚本中创建简单表单的方法。

在code.gs

 function doGet(e) {
     return HtmlService
     .createTemplateFromFile('Index')
     .evaluate()
     .setSandboxMode(HtmlService.SandboxMode.NATIVE)
}

function writeForm(form) {

    var customerName = form.myName;
    var paidPrice = form.myMoney;

    var ss = SpreadsheetApp.openById('1XPhhCko*******9mHvgNzFZ-mG8bWyFiBjn3B_B1bc');
    var sheet = ss.getSheetByName("customers");
    var newRow = sheet.getLastRow()+1;   
    var range = sheet.getRange(newRow, 1);

    range.setValue(customerName);
    range = sheet.getRange(newRow, 2);
    range.setValue(paidPrice);
}

请注意,HTML以NATIVE模式呈现。否则提交按钮将无效。

现在这里是Index.html表格:

<body>
<h1> This is a customer form </h1>

<form id="customerForm">
Customer name: 
<input name="myName" type="text" placeholder="Example: Bob"> 

<br>

 Money spent:
 <input name="myMoney" type="number" placeholder="0.00">

 <br>

 <input type="submit" onclick="google.script.run.writeForm(this.parentNode)">

HTML只是一个例子,原谅糟糕的设计和br标签。 这样做,在提交时,是在A1上保存客户名称和在A2上支付的价格(除非该行有数据,因此它将在新行上写入)