반복문을 활용한 데이터 처리
반복문은 Google Apps Script에서 여러 셀을 반복적으로 다룰 때 매우 유용한 도구입니다. 반복문을 사용하면 대량의 데이터를 처리하거나, 여러 셀에 대해 동일한 작업을 자동으로 수행할 수 있습니다. 이번 포스팅에서는 for
반복문과 while
반복문을 활용하여 Google Sheets 데이터를 효율적으로 다루는 방법을 상세히 소개하겠습니다.
1. For 반복문 기초
for
반복문은 특정 범위나 조건에 맞춰 반복적으로 작업을 실행할 수 있게 해주는 기본적인 반복문입니다. Google Sheets에서 여러 셀을 하나씩 순회하면서 값을 수정하거나 검토할 때 유용하게 사용할 수 있습니다. 기본적인 for
반복문의 구조는 다음과 같습니다:
for (var i = 0; i < 조건; i++) {
// 반복할 코드
}
예를 들어, 특정 범위의 모든 셀에 값을 입력하고 싶다면 다음과 같은 코드를 사용할 수 있습니다:
function fillCellsWithValues() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A1:A10"); // A1부터 A10까지의 범위
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
range.getCell(i + 1, 1).setValue("Updated"); // 각 셀에 'Updated'라는 값을 입력
}
}
이 코드에서는 A1:A10
범위의 모든 셀을 반복적으로 순회하면서 각 셀에 "Updated"
라는 값을 입력합니다. 이때 getCell(i + 1, 1)
부분에서 i + 1
은 반복 인덱스를 사용해 각 셀을 정확하게 참조하는 역할을 합니다.
1.1 범위 및 셀에 대한 이해
위 코드에서 getRange()
와 getCell()
메서드는 Google Sheets에서 셀을 조작하는 데 필수적인 기능입니다. getRange("A1:A10")
은 A1부터 A10까지의 범위를 가져오고, 이 범위의 값을 getValues()
를 통해 2차원 배열로 가져옵니다. getCell(row, column)
은 해당 범위 내에서 특정 셀을 지정할 때 사용되며, 여기서 행과 열은 각각 1부터 시작합니다. 이를 통해 반복문을 사용해 각 셀을 하나씩 다루는 것이 가능합니다.
2. While 반복문 사용하기
while
반복문은 조건이 참일 동안 반복적으로 실행되는 반복문입니다. 특정 조건을 만족하는 한 작업을 계속 수행하고자 할 때 사용됩니다.
while (조건) {
// 조건이 참인 동안 실행될 코드
}
예를 들어, 특정 행의 마지막 값이 빈 셀이 나올 때까지 값을 계속 입력하는 예제를 살펴보겠습니다:
function fillUntilEmpty() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var row = 1;
while (sheet.getRange(row, 1).getValue() !== "") {
sheet.getRange(row, 2).setValue("Processed");
row++;
}
}
이 코드는 첫 번째 열의 빈 셀이 나올 때까지 두 번째 열에 "Processed"
라는 값을 계속 입력합니다. while
반복문은 데이터의 끝을 정확히 모를 때 유용합니다. 예를 들어, 새로운 데이터가 계속 추가되는 상황에서 마지막 행을 동적으로 처리할 때 효과적입니다.
2.1 무한 루프 방지하기
while
반복문을 사용할 때는 무한 루프가 발생하지 않도록 주의해야 합니다. 조건이 계속 참이라면 반복이 멈추지 않기 때문입니다. 이를 방지하기 위해 조건문이 언젠가는 거짓이 되도록 설계해야 합니다. 예를 들어, 반복문 안에서 행 번호를 증가시키는 로직을 통해 조건이 거짓이 될 수 있게 합니다.
3. 이중 반복문을 이용한 2차원 데이터 처리
Google Sheets에서 여러 행과 열에 걸친 데이터를 처리할 때는 이중 반복문을 사용하면 효율적입니다. 이중 반복문은 두 개의 for
반복문을 중첩하여 사용하며, 행과 열 모두에 대해 작업을 수행할 수 있습니다.
function process2DArray() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A1:C5"); // A1부터 C5까지의 범위
var values = range.getValues();
for (var i = 0; i < values.length; i++) { // 행을 순회
for (var j = 0; j < values[i].length; j++) { // 열을 순회
if (values[i][j] > 50) {
range.getCell(i + 1, j + 1).setBackground("#FFFF00"); // 50보다 큰 값의 셀을 노란색으로 설정
}
}
}
}
이 예제에서는 A1:C5
범위의 셀 중 값이 50보다 큰 셀에 대해 배경색을 노란색으로 변경합니다. values[i][j]
를 통해 2차원 배열의 특정 값을 참조하며, 이를 기반으로 셀의 스타일을 변경합니다. 이중 반복문은 데이터가 2차원 배열로 제공되기 때문에 행(i
)과 열(j
)을 각각 순회하며 처리합니다.
3.1 성능 고려하기
이중 반복문은 데이터의 크기가 클수록 성능에 영향을 미칠 수 있습니다. 예를 들어, 수천 개의 셀이 있는 경우 각 셀을 순회하며 작업을 수행하는 데 시간이 오래 걸릴 수 있습니다. 이를 해결하기 위해 가능하다면 필요한 범위만 선택하여 작업하거나, 데이터 변경을 최소화하는 방식으로 스크립트를 작성하는 것이 좋습니다.
4. 실습 예제: 특정 단어가 포함된 셀 찾기
반복문을 활용하여 특정 단어가 포함된 셀을 찾아내고, 해당 셀에 강조 표시를 하는 실습 예제를 소개하겠습니다. 예를 들어, “Critical”
이라는 단어가 포함된 셀을 모두 찾아 배경을 빨간색으로 변경하는 방법입니다:
function highlightCriticalCells() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
var range = sheet.getRange("A1:A20");
var values = range.getValues();
for (var i = 0; i < values.length; i++) {
if (values[i][0].toString().includes("Critical")) {
range.getCell(i + 1, 1).setBackground("#FF0000"); // "Critical" 포함된 셀을 빨간색으로 설정
}
}
}
이 코드를 사용하면, A1:A20
범위에서 "Critical"
이라는 단어가 포함된 모든 셀을 빨간색으로 강조할 수 있습니다. 이를 통해 중요한 정보나 특정 조건에 해당하는 데이터를 쉽게 시각적으로 구분할 수 있습니다. values[i][0].toString()
을 사용하여 셀 값을 문자열로 변환하는 것은 값이 숫자일 때도 오류 없이 "includes"
메서드를 사용할 수 있게 하기 위함입니다.
4.1 데이터 정규화 및 변환
셀의 값을 비교하거나 찾기 전에 데이터를 정규화(예: 모두 소문자로 변환)하면 검색의 일관성을 유지할 수 있습니다. 예를 들어, values[i][0].toString().toLowerCase().includes("critical")
과 같이 사용하여 대소문자 구분 없이 조건을 적용할 수 있습니다.
마무리
반복문은 Google Apps Script에서 데이터를 효율적으로 처리하는 데 필수적인 도구입니다. for
및 while
반복문을 적절히 활용하면 대량의 데이터를 자동으로 손쉽게 처리할 수 있으며, 이중 반복문을 통해 행과 열에 걸쳐 복잡한 작업을 자동화할 수 있습니다. 이번 포스팅에서 소개한 내용을 기반으로 반복문을 활용한 데이터 처리를 연습해보세요. 반복문을 사용하면서 발생할 수 있는 성능 이슈와 무한 루프에 대한 주의점을 항상 염두에 두고 스크립트를 작성하는 것이 중요합니다.
다음 주제에서는 Google Apps Script를 사용하여 Gmail, Calendar 등 다른 Google 서비스와 연동하는 방법을 다룰 예정입니다. 다양한 Google 앱을 연동하여 더 풍부한 자동화 작업을 경험해 보세요!
'프로그래밍 언어 > 앱스크립트(AppsScript)' 카테고리의 다른 글
[AppsScript] 6. 조건부 로직 추가하기 (If-Else 사용법) (1) | 2024.10.26 |
---|---|
[AppsScirpt] 5. 구글 시트 데이터 수정 및 범위 다루기 (0) | 2024.02.12 |
[AppsScirpt] 4. 구글 시트 데이터 읽기 및 쓰기 (0) | 2024.02.12 |
[AppsScirpt] 3. 스크립트 실행 및 디버깅 (0) | 2024.02.12 |
[AppsScirpt] 2. 기본 스크립트 작성 (0) | 2024.02.11 |