仅从html表单向电子表格发送一些变量

时间:2015-12-26 22:30:38

标签: html google-apps-script spreadsheet

我发现这个方法来自html [link] Add basic data to a Google Spreadsheet via a simple HTML Form的商店数据,但是这种方法不是按顺序发送数据。我想按顺序发送数据,只发送一些变量 我有这个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");
}

有一些方法可以按顺序发送变量吗?

1 个答案:

答案 0 :(得分: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()

在“提交”按钮中。