我在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表单输入字段列表以将数据导入电子表格?
答案 0 :(得分:1)
您在这里遇到的问题是对象的点符号不会被解释为变量 - 它被解释为文字。因此对于form.role
,引擎正在查看对象form
,并检查名为"role"
的属性,即使在您的环境中有一个名为role
的变量。< / p>
要获取由名为role
的变量的值命名的属性的值,必须使用括号表示法:form[role]
。