2013-04-10 118 views
0

我正在创建一个可以将结果转储到Google电子表格中的Google应用程序脚本。表单根据需要随着使用Javascript和DOM来复制id =“duplicate_me”的部分。如何避免需要变量变量?

<form method="post" action="https://script.google.com/macros/s/.../exec"> 
    <fieldset> 
    <input type="text" name="P_name"> 
    <input type="text" name="P_addr"> 
    </fieldset> 
    <fieldset id="duplicate_me"> 
    <input type="text" name="C1_name"> 
    <input type="text" name="C1_addr"> 
    </fieldset> 
    <fieldset id="first_duplicate"> 
    <input type="text" name="C2_name"> 
    <input type="text" name="C2_addr"> 
    </fieldset> 
</form> 

我需要脚本为每组C做一个appendRow()吗?字段和顺序很重要。 IE:

function doPost(e) { 
... 
    sheet.appendRow([ e.parameter.P_name, e.parameter.P_addr, e.parameter.C1_name, e.parameter.C1_addr ]); 
    sheet.appendRow([ e.parameter.P_name, e.parameter.P_addr, e.parameter.C1_name, e.parameter.C1_addr ]); 
... 
} 

唯一的解决办法我能想出是要在C位?一个变量,但我意识到这是一个糟糕的解决方案,难以实施。

我怎样才能将这些变量放入一个表单中,让我可以在循环中执行此命令,而不是手动创建任意数量的这些条目?

感谢您的想法。

--Dave

+0

什么是“变量变量”? – 2013-04-10 17:16:20

+0

来自[php.net](http://php.net/manual/en/language.variables.variable.php):“一个变量变量接受一个变量的值并将其视为一个变量的名称。” – Dave 2013-04-10 18:25:48

+0

我目前使用eval()来解决这个问题,一旦系统允许我发布这种类型的解决方案。 – Dave 2013-04-10 19:59:49

回答

0

你的解决方案是完全正确的。

在循环中写入e.parameter['C' + i + '_name']

+0

当我尝试访问e.parameter.C1_name作为e.parameter [C1_name]时,Google返回一个错误:'ReferenceError:“c1_firstname”未定义。“ – Dave 2013-04-10 18:23:00

+0

@Dave:'[]'期待一个字符串。您需要使用字符串连接,正如我在答案中所示。 – SLaks 2013-04-10 19:33:04

+0

谢谢。得到它的工作。 – Dave 2013-04-24 04:10:56