일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- dataframe
- math
- Java
- django
- string
- Mac
- Redshift
- matplotlib
- Google Spreadsheet
- Google Excel
- list
- google apps script
- numpy
- 파이썬
- PySpark
- Excel
- gas
- Kotlin
- array
- Tkinter
- hive
- c#
- Python
- Apache
- SQL
- PostgreSQL
- GIT
- Github
- PANDAS
- Today
- Total
달나라 노트
Google Apps Script : for loop (for 반복문) 본문
Google Apps Script에서 for loop는 어떻게 사용할 수 있는지 알아봅시다.
Google Apps Script에서 for loop의 형태는 여러 가지가 있으니 상황에 따라 또는 본인의 취향에 따라 골라서 사용하면 됩니다.
Syntax
for (i in iterator) {
... do something ...
}
첫 번째 형태입니다.
보통의 for loop에서 많이 보이는 형태입니다.
(참고로 iterator는 list나 array처럼 여러 개의 데이터를 하나로 묶어서 각각의 요소를 하나씩 꺼내면서 반복이 가능한 type을 의미합니다.)
근데 한 가지 중요한 차이가 있습니다.
for ~ in loop에서는 array의 index를 i에 할당합니다.
array를 가지고 for loop를 돌리면 array값 자체가 아니라 array의 index를 0부터 i에 할당하여 for loop가 실행됩니다.
for (i of iterator) {
... do something ...
}
두 번째 형식은 첫 번째 형식과 비슷한데 in 대신 of를 사용합니다.
이것은 iterator에 속한 요소들을 i에 return합니다.
for (initialize; condition; increment;) {
... do something ...
}
마지막 for loop 형태입니다.
이것은 for loop의 반복 변수를 i라고 할 때
이 반복 변수의 초기값 (= initialize)
그리고 for loop를 실행시킬 조건 (= condition)
for loop 각각의 단계마다 실행할 반복 변수 증감 조건 (= increment)
이렇게 3개를 명시해주는 것입니다.
즉, 반복 변수 i는 초음에 initialize 값을 가지고 for loop가 실행되며 한 단계씩 지날 때 마다 increment에 명시된 증감 계산이 실행됩니다.
그리고 매 단계마다 for loop를 중단할지 계속 실행할지를 결정하는 기준은 condition이 true이면 for loop를 실행하고 condition이 false이면 for loop를 중단합니다.
좀 복잡한데 예시를 보면 알 수 있습니다.
function myFunction() {
var arr_test = ['a', 'b', 30, 'c', 120];
for (i in arr_test) {
Logger.log(i);
}
}
-- Result
0
1
2
3
4
먼저 for ~ in loop의 예시입니다.
arr_test는 분명히 ['a', 'b', 30, 'c', 120] 이것인데 i를 출력시켜보니 0, 1, 2, 3, 4가 출력되었습니다.
즉, for ~ in loop는 array의 요소가 아니라 index를 return하는 것입니다.
function myFunction() {
var arr_test = ['a', 'b', 30, 'c', 120];
for (i in arr_test) {
Logger.log(arr_test[i]);
}
}
-- Result
a
b
30.0
c
120.0
만약 for ~ in loop에서 array에 요소에 접근하고 싶다면 위처럼 for loop 내부에서 indexing을 통해 접근해야 합니다.
function myFunction() {
var animal = {
'name': 'cat',
'color': 'white',
'age': 3
};
for (i in animal) {
Logger.log(i);
}
}
-- Result
name
color
age
array에서 for ~ in loop가 index를 iterator로 한다는 것은
for ~ in loop에서 dictionary를 쓴다면 위처럼 value값이 아닌 key값을 iterator로 쓰게 됩니다.
위 코드의 결과를 보면 animal에 존재하는 값의 pair 중 왼쪽에 있는 key값이 출력된 것을 볼 수 있습니다.
function myFunction() {
var animal = {
'name': 'cat',
'color': 'white',
'age': 3
};
for (i in animal) {
Logger.log(animal[i]);
}
}
-- Result
cat
white
3.0
만약 value값에 접근하고 싶다면 위처럼 animal[key]와 같은 방식을 통해 value값에 접근해야 합니다.
function myFunction() {
var arr_test = ['a', 'b', 30, 'c', 120];
for (i of arr_test) {
Logger.log(i);
}
}
-- Result
a
b
30.0
c
120.0
for ~ of loop 입니다.
이것은 array의 요소 그 자체를 반목문 대상으로 이용합니다.
따라서 별도의 indexing 없이 바로 array의 요소가 출력되는 것을 볼 수 있습니다.
function myFunction() {
for (var i = 10; i <= 15; i = i + 1) {
Logger.log(i);
}
}
-- Result
10.0
11.0
12.0
13.0
14.0
15.0
마지막 for loop 형태입니다.
하나씩 해석해봅시다.
- for (var i = 10; i <= 15; i = i + 1)
가장 중요한 것은 이 부분이죠.
var i = 10; -> for loop의 반복 변수는 i라고 하고 첫 시작은 10으로 시작합니다.
i <= 15; -> 매 for loop 단계마다 이 조건을 테스트하여 이 조건이 true일 때에만 반복문을 실행합니다. 이 조건이 false가 되면 반복문을 종료합니다. (즉, 이 예시에선 i가 15 이하일 때 에만 반복문이 실행됩니다.)
i = i + 1; -> for loop가 한번 완료될 때 마다 i를 1씩 증가시킵니다.
따라서 출력된 것을 보면 10, 11, 12, 13, 14, 15입니다.
i의 첫 시작이 10이므로 가장 처음 출력된 값은 10입니다.
그리고 이것이 1씩 늘어나며 11, 12, 13, 14가 출력되고,
마지막 단계에서 i = 15일 때 i <= 15라는 기준이 true이므로 15도 출력됩니다.
근데 다음 단계에서 i가 1 더 증가하여 16이 되면 i <= 15라는 기준이 false가 되므로 반복문이 종료됩니다.
'Google Apps Script' 카테고리의 다른 글
Google Apps Script : while loop (while 반복문) (0) | 2022.11.22 |
---|---|
Google Apps Script : if ~ else if ~ else (조건문) (0) | 2022.11.22 |
Google Apps Script : split (separator 기준으로 문자 나누기, separate string to array, regular expression) (0) | 2022.11.21 |
Google Apps Script : String을 Date로 변경, convert string to date type (0) | 2022.11.21 |
Google Apps Script : file.setName (파일 이름 바꾸기, 파일 이름 변경) (0) | 2022.11.21 |