0

我查看了各種以前發佈的關於使用JavaScript將HTML表單數據提交到Google Spreadsheet的數據。然而,Google Spreadsheet自從之前的帖子以及<input>entries work的方式發生了很大變化,所以我不確定如何讓我的表單寫入Google Spreadsheet。我基本上遵循這個URL的解決方案。我的代碼如下所示。有沒有人有如何解決的建議?問題在於缺少輸入字段。我的表單只有一個id = firstname和id = lastname,所以非常簡單直接就可以開始簡單。預先感謝您的期待。HTML表格數據到Google電子表格

<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> 
+0

是網站中的HTML,而不是一個Apps腳本Web應用程序? –

+0

我試圖將其作爲一個HTML頁面,通過JavaScript調用Google Form Spreadsheet。 – user2690151

回答

1

你這樣做的方式很有趣,但還有更好的方法。爲了您當前的工作策略,您需要創建一個與您的數據相匹配的Google表單。你不需要那樣做。最好創建一個獨立的Apps腳本Web應用程序,其中包含一個doPost(e)函數。該doPost(e)函數可以捕獲HTTP請求負載,並在調用Apps腳本Web應用程序url時運行doPost(e)函數。 e參數將從POST請求中捕獲有效載荷數據。

你可以看一下計算器問題,像這樣的:

Call a custom Apps Script function from external url

0

下面是如何創建谷歌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呈現在本機模式。否則,提交按鈕將不起作用。

現在,這裏的的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上支付的價格(除非該行有數據,因此它將寫入新行)

+0

謝謝。我得到了它的工作。 – user2690151