在Google Apps脚本中动态定义变量名称和分配值

时间:2015-01-09 10:54:41

标签: javascript google-apps-script

我正在编写一个脚本来在Google Apps脚本中生成表单。

这个想法是,用户应该从下拉列表中选择他/她的名字,然后转移到他/她的问题块。

虽然问题是相同的,但如果某些问题的下拉列表中的选项会略有变化。

我有一个包含用户名称的数组,我已经为每个用户定义了问题。 这并不理想,好像我必须在每个块上重写一个问题有任何改变。

我想使用一个循环,通过使用用户名数组创建变量名来生成问题块。

我尝试了以下(这不是实际的代码,但会抛出相同的错误)

for (a=0; a < 10; a++)
{
 eval('var beginning'+a);
}

for (b=0;b<10; b++)
{
 eval('beginning' + b) = 1;
}    

第一个for循环运行正常,但是当我尝试分配任何值时,它会抛出错误。 (我在这里使用两个for循环来进行调试。) E.g:

 eval('beginning' + b) = 1;  //Throws: We're sorry, a server error occurred. Please wait a bit and try again.
 eval('beginning' + b + '= 1;');  //Throws: We're sorry, a server error occurred. Please wait a bit and try again.
 eval('beginning' + b = 1);  //Throws: Invalid assignment left hand side. (line 1, file "Code")

像这样使用eval也很好:choices = eval('lCountries' + Names[i]).getChoices();

如何在for循环中为这些变量赋值?

非常感谢你。

1 个答案:

答案 0 :(得分:1)

就我到目前为止所读到的,eval()几乎总是一个糟糕的选择,应谨慎处理,并且大部分从未使用过。这样的Dinamic变量也是一个糟糕的编程逻辑,我从来没有见过它是必须的情况,你的情况显然不是,你可以用一个对象轻松绕过它,只需定义一个通用对象var myVariables = {},然后开始为变量分配它的属性。

var myVariables = {};
myVariables[ "beginning" ] = 1

for( i = 0; i < 10; i++){
  myVariables[ ("beginning" + i) ] = i;
}


Logger.log( myVariable[ "beginning5" ] ); //Loggs 5