在 Google Apps 脚本中动态定义变量名称和赋值
Dynamically define variable name and assigning value in Google Apps Script
我正在编写脚本以在 Google Apps 脚本中生成表单。
想法是,用户应该从下拉列表中 select his/her 命名,然后转移到 him/her 的问题块。
尽管问题相同,但如果某些问题的下拉菜单,选项会略有不同。
我有一个包含用户名称的数组,并且我已经为每个用户定义了问题。
这不太理想,好像题目有什么变化我得一个一块一块地重写。
我想使用一个循环,它通过使用用户名数组创建变量名称来生成问题块。
我尝试了以下(这不是实际代码,但抛出相同的错误)
for (a=0; a < 10; a++)
{
eval('var beginning'+a);
}
for (b=0;b<10; b++)
{
eval('beginning' + b) = 1;
}
第一个 for
循环运行良好,但当我尝试分配任何值时它会抛出错误。 (我在这里使用两个 for
循环仅用于调试。)
例如:
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
循环中为这些变量赋值?
非常感谢您。
就我目前所读的内容而言,eval() 几乎总是一个糟糕的选择,应谨慎处理并且几乎从未使用过。以这种方式使用动态变量也是一种糟糕的编程逻辑。我从来没有见过必须这样做的情况,而您的情况显然不是。您可以使用对象轻松绕过它,只需定义一个通用对象 var myVariables = {}
,然后开始为您的变量动态分配其属性。
var myVariables = {};
myVariables[ "beginning" ] = 1;
for( i = 0; i < 10; i++){
myVariables[ ("beginning" + i) ] = i;
}
Logger.log( myVariable[ "beginning5" ] ); //Loggs 5
我正在编写脚本以在 Google Apps 脚本中生成表单。
想法是,用户应该从下拉列表中 select his/her 命名,然后转移到 him/her 的问题块。
尽管问题相同,但如果某些问题的下拉菜单,选项会略有不同。
我有一个包含用户名称的数组,并且我已经为每个用户定义了问题。 这不太理想,好像题目有什么变化我得一个一块一块地重写。
我想使用一个循环,它通过使用用户名数组创建变量名称来生成问题块。
我尝试了以下(这不是实际代码,但抛出相同的错误)
for (a=0; a < 10; a++)
{
eval('var beginning'+a);
}
for (b=0;b<10; b++)
{
eval('beginning' + b) = 1;
}
第一个 for
循环运行良好,但当我尝试分配任何值时它会抛出错误。 (我在这里使用两个 for
循环仅用于调试。)
例如:
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
循环中为这些变量赋值?
非常感谢您。
就我目前所读的内容而言,eval() 几乎总是一个糟糕的选择,应谨慎处理并且几乎从未使用过。以这种方式使用动态变量也是一种糟糕的编程逻辑。我从来没有见过必须这样做的情况,而您的情况显然不是。您可以使用对象轻松绕过它,只需定义一个通用对象 var myVariables = {}
,然后开始为您的变量动态分配其属性。
var myVariables = {};
myVariables[ "beginning" ] = 1;
for( i = 0; i < 10; i++){
myVariables[ ("beginning" + i) ] = i;
}
Logger.log( myVariable[ "beginning5" ] ); //Loggs 5