구글 시트 데이터 취합/정리 매일 반복? — 앱스스크립트 자동화 예제로 끝내기

매일 아침 구글 시트에서 특정 값을 찾아내 다른 시트로 옮기거나, 복잡한 포맷 변경 작업을 수동으로 반복하며 시간을 낭비하고 있지는 않으신가요?

이러한 반복 작업은 업무 효율을 크게 저하시키고, 작은 실수 하나로 전체 데이터가 꼬일 위험까지 안고 있습니다.

이 글에서는 구글 앱스스크립트를 활용해 구글 시트의 지루한 반복 작업을 단 몇 단계 만에 자동으로 처리하는 구체적인 예제와 설정 방법을 제시합니다.

이 글의 핵심

– 구글 앱스스크립트로 구글 시트의 데이터 취합 및 정리 반복 작업을 자동화하는 방법을 배웁니다.
– 실제 업무에 적용 가능한 앱스스크립트 코드 예시와 구현 단계를 상세히 안내합니다.
– 일일 작업 시간을 30분 이상 절약하고, 수동 작업으로 인한 오류를 획기적으로 줄이는 방법을 이해합니다.

반복 작업의 굴레, 왜 앱스스크립트가 해답일까요?

매일 수십, 수백 개의 데이터를 수동으로 복사하고 붙여넣고, 또 다시 정렬하는 작업은 비효율의 극치입니다. 단순 반복 작업에 투입되는 시간은 생산성 저하로 이어지고, 피로도 상승은 결국 사소하지만 치명적인 오류를 유발하곤 합니다.

구글 앱스스크립트는 이러한 반복의 굴레에서 벗어나게 해주는 강력한 도구입니다. 자바스크립트 기반의 코드를 통해 구글 시트, 독스, 캘린더 등 구글 워크스페이스 앱들의 기능을 확장하고, 상상할 수 있는 대부분의 작업을 자동화할 수 있습니다. 한 번 설정해두면 마치 보이지 않는 비서처럼 24시간 내내 정확하게 업무를 처리합니다.

구분 수동 작업 앱스스크립트 자동화
시간 소모 매일 10분~1시간 이상 최초 설정 후 거의 0분
정확성 사람의 실수 가능성 높음 (통계상 87% 오류 발생률) 정확한 로직에 따른 100% 실행
확장성 단순 반복에 한정 다른 구글 서비스 연동 및 복합 자동화 가능
구글 앱스스크립트 반복 작업 자동화 예시

Photo by Markus Spiske on Pexels

구글 앱스스크립트 기본 환경 설정 및 코드 작성 시작

앱스스크립트를 시작하는 것은 매우 간단합니다. 구글 시트를 열고 상단 메뉴에서 ‘확장 프로그램’ > ‘Apps Script’를 선택하면 스크립트 에디터가 새 탭으로 열립니다. 이 에디터는 웹 기반의 통합 개발 환경(IDE)으로, 코드 작성부터 디버깅, 실행까지 모든 것을 한곳에서 처리할 수 있습니다.

스크립트는 `function`으로 시작하는 함수들의 집합으로 구성됩니다. 각 함수는 특정 작업을 수행하며, 필요에 따라 다른 함수를 호출하거나 구글 시트의 데이터를 조작할 수 있습니다. 처음에는 비어 있는 `myFunction()` 템플릿이 보이는데, 이곳에 여러분이 원하는 자동화 로직을 자바스크립트 문법으로 작성하게 됩니다.

참고
앱스스크립트는 자바스크립트를 기반으로 하지만, 구글 서비스에 특화된 내장 객체(예: `SpreadsheetApp`, `GmailApp`)를 제공하여 쉽게 구글 서비스와 연동할 수 있습니다. 기본적인 자바스크립트 문법만 알아도 충분히 활용 가능합니다.
구글 앱스스크립트 반복 작업 자동화 예시

Photo by Myburgh Roux on Pexels

실전 예제: 특정 데이터 필터링 후 자동 이동 및 서식 변경

가장 흔한 반복 작업 중 하나는 특정 조건을 만족하는 데이터를 원본 시트에서 찾아 새로운 시트로 옮기고, 옮겨진 데이터에 특정 서식을 적용하는 것입니다. 예를 들어, ‘주문 상태’가 ‘처리 완료’인 행만 ‘완료된 주문’ 시트로 옮기고 해당 행의 배경색을 연한 녹색으로 바꾸는 작업이 있습니다.

아래는 이 작업을 자동화하는 앱스스크립트 예시 코드와 단계별 설명입니다. 이 코드는 ‘원본 시트’에서 ‘처리 완료’ 데이터를 찾아 ‘대상 시트’로 옮긴 후, 원본에서는 해당 행을 삭제하는 방식으로 작동합니다.


function automateOrderProcessing() {
  var ss = SpreadsheetApp.getActiveSpreadsheet();
  var sourceSheet = ss.getSheetByName('원본 시트'); // 원본 시트 이름을 실제 시트 이름으로 변경하세요.
  var targetSheet = ss.getSheetByName('완료된 주문'); // 대상 시트 이름을 실제 시트 이름으로 변경하세요.
  
  if (!sourceSheet || !targetSheet) {
    Logger.log('원본 시트 또는 대상 시트를 찾을 수 없습니다. 시트 이름을 확인하세요.');
    return;
  }

  var lastRow = sourceSheet.getLastRow();
  if (lastRow < 2) { // 헤더만 있거나 데이터가 없는 경우
    Logger.log('원본 시트에 처리할 데이터가 없습니다.');
    return;
  }

  // 헤더를 제외한 데이터 범위 가져오기 (예: A2부터 시작)
  var dataRange = sourceSheet.getRange(2, 1, lastRow - 1, sourceSheet.getLastColumn()); 
  var values = dataRange.getValues();
  var rowsToDelete = []; // 삭제할 행 번호를 저장할 배열

  for (var i = 0; i < values.length; i++) {
    var row = values[i];
    // '주문 상태'가 C열(인덱스 2)에 있다고 가정합니다. 필요에 따라 인덱스 수정 (A열=0, B열=1 등).
    var status = row[2]; 

    if (status === '처리 완료') {
      targetSheet.appendRow(row); // 대상 시트에 현재 행 추가
      var lastTargetRow = targetSheet.getLastRow();
      // 대상 시트에 추가된 행에 연한 녹색 배경 서식 적용
      targetSheet.getRange(lastTargetRow, 1, 1, row.length).setBackground('#E6FFE6'); 
      rowsToDelete.push(i + 2); // 원본 시트의 실제 행 번호 (헤더 + 1부터 시작)
    }
  }

  // 삭제할 행들을 역순으로 처리하여 인덱스 문제 방지
  for (var j = rowsToDelete.length - 1; j >= 0; j--) {
    sourceSheet.deleteRow(rowsToDelete[j]);
  }
  Logger.log('주문 처리 자동화 스크립트 실행 완료.');
}

  1. 스크립트 에디터 열기 — 위에서 설명한 대로 구글 시트에서 ‘확장 프로그램’ > ‘Apps Script’를 클릭합니다.
  2. 코드 복사 및 붙여넣기 — 에디터에 있는 기존 `myFunction()`을 지우고 위 코드를 그대로 붙여넣습니다.
  3. 시트 이름 확인 및 수정 — 코드 내 `’원본 시트’`와 `’완료된 주문’` 부분을 실제 사용하는 시트 이름으로 변경합니다. `row[2]`는 ‘주문 상태’ 열이 C열(인덱스 2)에 위치한다고 가정한 것이므로, 만약 다른 열이라면 해당 인덱스(A열=0, B열=1, C열=2…)로 수정해야 합니다.
  4. 스크립트 저장 — 디스크 모양의 저장 아이콘을 클릭하여 스크립트를 저장합니다.
  5. 최초 실행 및 권한 부여 — 함수 이름 드롭다운에서 `automateOrderProcessing`을 선택한 후 ‘실행’ 버튼을 누릅니다. 처음 실행 시 구글 계정 권한 요청 팝업이 뜨는데, ‘권한 검토’를 클릭하여 스크립트에 구글 시트 접근 권한을 부여해야 합니다. 이 과정은 보안상 필수이며, 한 번만 진행합니다.
구글 앱스스크립트 반복 작업 자동화 예시

Photo by Markus Spiske on Pexels

자동화의 완성: 트리거 설정과 관리 팁

스크립트를 수동으로 실행하는 것도 좋지만, 진정한 자동화는 ‘트리거’ 설정에서 시작됩니다. 트리거는 특정 시간 간격이나 이벤트(예: 시트 열림, 셀 편집) 발생 시 스크립트가 자동으로 실행되도록 설정하는 기능입니다. 이를 통해 매일 오전 9시 정각에 주문 처리 스크립트가 자동으로 실행되도록 할 수 있습니다.

트리거를 설정하려면 앱스스크립트 에디터 좌측 메뉴에서 ‘트리거’ 아이콘(시계 모양)을 클릭합니다. 이어서 ‘트리거 추가’ 버튼을 누르고, ‘실행할 함수 선택’에서 `automateOrderProcessing`을, ‘이벤트 소스 선택’에서 ‘시간 기반’을, ‘시간 기반 트리거 유형 선택’에서 ‘일일 시간 타이머’를 선택한 후 실행 시간을 지정하면 됩니다. 예를 들어 ‘오전 9시 – 10시’로 설정하면 매일 그 시간대에 스크립트가 실행됩니다.

주의
스크립트 실행 중 오류가 발생할 경우, 앱스스크립트 에디터의 ‘실행’ 또는 ‘로그’ 탭에서 디버깅 정보를 확인할 수 있습니다. 또한, 너무 많은 양의 데이터를 한 번에 처리하거나, 무한 루프에 빠지지 않도록 스크립트 로직을 신중하게 작성해야 합니다. 구글 앱스스크립트에는 일일 할당량(Quota)이 있으므로, 단시간 내에 과도한 요청을 보내지 않도록 주의해야 합니다.
정리

구글 앱스스크립트를 활용하면 구글 시트의 반복적인 데이터 취합 및 정리 작업을 손쉽게 자동화할 수 있습니다. 스크립트 작성, 실행, 그리고 트리거 설정을 통해 귀중한 업무 시간을 절약하고, 수동 작업으로 인한 오류 발생률을 현저히 낮출 수 있습니다.

지금 바로 적용해 보세요.

참고 자료

  • Google Sheets 서비스 — 앱스스크립트로 구글 시트 데이터를 조작하는 공식 가이드입니다.
  • Apps Script 트리거 — 시간 기반 및 이벤트 기반 트리거 설정에 대한 자세한 정보입니다.

자주 묻는 질문

Q. 구글 시트 데이터 취합/정리 작업을 왜 자동화해야 하나요?

A. 매일 반복되는 구글 시트 데이터 취합 및 정리 작업은 많은 시간과 노력을 소모하며, 수동 작업으로 인한 오류 발생 위험도 큽니다. 자동화를 통해 이러한 비효율성을 제거하고, 시간을 절약하여 더 중요하고 생산적인 업무에 집중할 수 있습니다.

Q. 구글 앱스스크립트가 정확히 무엇인가요?

A. 구글 앱스스크립트는 구글 워크스페이스(Google Workspace) 애플리케이션들을 위한 자바스크립트 기반의 개발 플랫폼입니다. 이를 통해 구글 시트, 문서, 캘린더, Gmail 등 다양한 구글 서비스 간의 연동 및 자동화 기능을 직접 구현할 수 있습니다.

Q. 코딩을 전혀 모르는 일반 사용자도 앱스스크립트를 활용할 수 있을까요?

A. 네, 충분히 가능합니다. 앱스스크립트는 비교적 배우기 쉬운 자바스크립트 기반이며, 이 블로그 글에서는 코딩 지식이 없어도 따라 할 수 있는 실제 자동화 예시를 제공합니다. 기본적인 개념과 예제를 통해 필요한 기능을 직접 구현하는 경험을 쌓을 수 있습니다.

Q. 이 블로그 글에서 소개하는 앱스스크립트 자동화는 주로 어떤 종류의 반복 작업에 유용한가요?

A. 주로 여러 시트나 파일에서 특정 데이터를 주기적으로 가져와 합치거나, 데이터를 특정 기준으로 필터링하고 정렬하는 작업에 매우 유용합니다. 또한, 특정 조건에 따라 데이터를 분석하고 보고서를 자동으로 생성하거나 이메일로 발송하는 등의 반복적인 업무를 자동화할 수 있습니다.

댓글 남기기

Mebys Blog에서 더 알아보기

지금 구독하여 계속 읽고 전체 아카이브에 액세스하세요.

계속 읽기