Google Apps脚本HTML表单 - 使用表单字段的变量将数据放入电子表格

时间:2018-03-16 11:09:50

标签: google-apps-script google-sheets html-form

我在Google表格中有一个小型的rota应用程序。

有一个选项卡列出了作业/角色的类型。该列表可以改变,例如上周,一个新角色被添加到列表中。

我有一个HTML表单,用于向rota应用程序添加新员工。

表单使用电子表格中的角色列表在我的addPerson.html上的表单上动态创建输入字段:

<? var ss = SpreadsheetApp.getActive(); //get the currently open & active workbook
     var roles =ss.getSheetByName("Roles");  // get the Roles tab
     var roleValues = roles.getRange(1,1,roles.getLastRow(),1).getValues();?>
  <table>      
  <? for (i = 0; i < roleValues.length; i++) { ?>

  <tr><td><?= roleValues[i]?>:</td><td> £</td><td> <input type = "number" name=<?= String(roleValues[i]).replace(/\s/g,'') ?> id=<?= String(roleValues[i]).replace(/\s/g,'') ?>/></td></tr>
  <? } ?>
  </table>

这一切都正常。

我遇到问题的方法是从表单中访问上面代码中创建的字段的数据。我可以毫无问题地访问其他数据。

以下是我在code.gs中尝试获取相关字段的方法:

for(i=0; i<lastRole; i++){
  nextRow++;
  var role = String(roleValues[i]).replace(/\s/g,'');
  Logger.log(role);
  if(form.role !== null){
    Logger.log(form.role);
    rates.getRange(nextRow, 1).setValue(name);
    rates.getRange(nextRow, 2).setValue(form.role);
    rates.getRange(nextRow, 3).setValue(rate);
    rates.getRange(nextRow, 4).setValue(team);

  }
}

role的初始定义很正常,但将其用作form.role并不起作用,正如您在日志中看到的那样。

[18-03-16 04:04:43:634 PDT] Bar
[18-03-16 04:04:43:635 PDT] undefined
[18-03-16 04:04:43:643 PDT] BarB
[18-03-16 04:04:43:643 PDT] undefined
[18-03-16 04:04:43:651 PDT] BarSup
[18-03-16 04:04:43:652 PDT] undefined
[18-03-16 04:04:43:660 PDT] DM
[18-03-16 04:04:43:661 PDT] undefined
[18-03-16 04:04:43:669 PDT] DT
[18-03-16 04:04:43:670 PDT] undefined
[18-03-16 04:04:43:678 PDT] FoHC
[18-03-16 04:04:43:679 PDT] undefined
[18-03-16 04:04:43:688 PDT] Maint
[18-03-16 04:04:43:688 PDT] undefined
[18-03-16 04:04:43:697 PDT] TM
[18-03-16 04:04:43:698 PDT] undefined
[18-03-16 04:04:43:707 PDT] VT
[18-03-16 04:04:43:707 PDT] undefined

如何处理HTML表单输入字段列表以将数据导入电子表格?

1 个答案:

答案 0 :(得分:1)

您在这里遇到的问题是对象的点符号不会被解释为变量 - 它被解释为文字。因此对于form.role,引擎正在查看对象form,并检查名为"role"的属性,即使在您的环境中有一个名为role的变量。< / p>

要获取由名为role的变量的值命名的属性的值,必须使用括号表示法:form[role]

考虑在Property Accessors

上查看MDN资源