2015-01-09 4 views
0

Google Apps Script에서 양식을 생성하는 스크립트를 작성했습니다.변수 이름을 동적으로 정의하고 Google Apps Script에서 값을 할당합니다.

사용자는 드롭 다운 목록에서 이름을 선택하고 그 사람을 위해 질문 블록으로 전송해야한다는 생각입니다.

질문은 동일하지만 일부 질문에 대한 드롭 다운이있는 경우 약간의 변경이 있습니다.

나는 사용자 이름을 가진 배열을 가지고 있으며 모든 단일 사용자에 대해 질문을 정의했습니다. 질문에 변경 사항이있을 때마다 하나씩 모든 블록을 다시 작성해야하는 것처럼 이상적인 것은 아닙니다.

사용자 이름의 배열을 사용하여 변수 이름을 생성하여 질문 블록을 생성하는 루프를 사용하고 싶습니다.

나는 (이 실제 코드가 아니라 같은 오류가 발생합니다)

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 루프에서이 변수에 값을 어떻게 할당 할 수 있습니까?

대단히 감사합니다.

답변

1

지금까지 내가 읽은 한, eval()은 거의 항상 나쁜 선택 이었으므로주의해서 처리해야하며 거의 사용되지 않았습니다. 그런 식으로 다이나믹 변수도 나쁜 프로그래밍 논리입니다, 나는 그것이 필요한 경우를 본 적이 없으며, 당신의 사건은 분명히 아닙니다, 당신은 쉽게 객체를 가지고 주위를 둘러 볼 수 있습니다. 단지 일반 객체 var myVariables = {}을 정의하고, 그런 다음 해당 변수를 동적으로 할당하기 시작하십시오.

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

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


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

대단히 고맙습니다. –

관련 문제