2015-12-26 24 views
2

我发现这种方法存储数据从HTML [链接] Add basic data to a Google Spreadsheet via a simple HTML Form,但这种方法发送数据不按顺序。我想送的指令和数据只有一些变量 我有这个HTML文件只发送一些变量到电子表格从一个HTML表格

<!DOCTYPE html> 
<html> 
    <head> 
    <base target="_top"> 
    </head> 
    <body> 
    <form id="form" method="get" action="https://script.google.com/macros/s/AKfycbzhVAFaP7tFTbSzgeO0y9rUBl6ptVRCbqpS9wi12yFmoboYjw/exec" accept-charset="UTF-8"> 
    Name and age! 
    <input type=text name=name id=name> 
    <input type="text" name="direccion" placeholder="Direccion completa"> 
    <input type=number name=age id=age> 
    <input type="Apellido" name="Apellido" id="Apellido"> 
    <input type=submit onclick=google.script.run.addProduct()> 
</form>  
</body> 
</html> 

而且我在我的电子表格这种code.gs

function doGet(e){ 
    var vals=[]; 
    vals.push(new Date()); 
    for(var i in e.parameter){ 
    vals.push(e.parameter[i]); 
    } 
    SpreadsheetApp.openById("1KYR7SefLy5P-JP3LqdKsRRd_bkwTHFGFQQ0rnD3JfUM").appendRow(vals); 
    return ContentService.createTextOutput("Información enviada correctamente"); 
} 

有一些方法来发送变量订购?

回答

0

当表单标签中的操作提交表单时,表单元素将被提交给URL。表单元素是一个对象。一个对象将改变元素的顺序。数组保证数据的顺序,对象不保证数据在对象中的顺序。

但是,您可以通过它的键名来引用对象中的每个元素,在这种情况下,它将是name属性。

function doGet(e){ 

    var vals=[]; 
    vals.push(new Date()); 
    vals.push(e.parameter.name); 
    vals.push(e.parameter.direccion); 
    vals.push(e.parameter.age); 
    vals.push(e.parameter.Apellido); 

    Logger.log('vals: ' + vals); 
    SpreadsheetApp.openById("").appendRow(vals); 
    //return ContentService.createTextOutput(""); 
}; 

确保订单的唯一方法是在数据发送前设置订单,或者在检索数据后设置订单。上面的例子设置了数据处理的顺序。

发送一些输入值的唯一方法是在发送表单之前处理表单。显然,你可以省略服务器端的一些值。如果您打算在表单标签中使用该策略,那么您不需要在提交按钮中提供以下内容:

onclick=google.script.run.addProduct() 

+0

你真棒:)谢谢,这解决了我的问题 –

相关问题