스프레드시트 활용/1~20. 기초함수 및 기본기능

1-7. 스프레드시트로 자동화와 매크로를 구현해야 하는 혁신적 이유

JS's Spreadsheets 2025. 9. 2. 11:44

구글 스프레드시트 자동화 완벽 마스터 가이드

 

Apps Script란 무엇인가?

Google Apps Script는 구글 생태계를 자동화하는 클라우드 기반 JavaScript 플랫폼입니다. Gmail, 구글 드라이브, 스프레드시트, 캘린더 등을 하나의 스크립트로 통합 제어할 수 있는 강력한 도구입니다.

 

Apps Script의 핵심 특징:

·        JavaScript 기반: 최신 웹 표준 언어로 배우기 쉬움

·        클라우드 네이티브: 구글 서버에서 실행되는 서버리스 환경

·        API 통합: 구글 서비스와 외부 API 간편 연동

·        트리거 시스템: 시간, 이벤트, 조건 기반 자동 실행

 

🔗 지금 바로 사용해보세요!

📥 자동화와 매크로 스프레드시트 바로가기

클릭  번으로 바로 접속해서 복사하여 사용하실  있습니다

 

기본 매크로 생성 3단계

단계 1: 매크로 기록하기

자동 매크로 기록:

1.      확장 프로그램 → 매크로 → 매크로 기록 클릭

2.     참조 유형 선택:

    o   절대 참조: 고정된 셀 위치에서 실행

     o   상대 참조: 현재 선택된 셀 기준으로 실행

3.      작업 수행: 자동화하고 싶은 동작들을 실제로 실행

4.     저장: 매크로 이름을 지정하고 저장

 

단계 2: 매크로 실행하기

저장된 매크로 실행:

1.      확장 프로그램 → 매크로 → [매크로명] 선택

2.     권한 승인: 최초 실행 시 Google 계정 권한 승인

3.      자동 실행: 기록된 동작들이 순서대로 자동 실행

 

단계 3: Apps Script 편집

고급 스크립트 편집:

1.      확장 프로그램 → Apps Script 선택

2.     코드 편집기: JavaScript 기반 스크립트 편집 환경

3.      함수 작성: 매크로보다 훨씬 강력한 자동화 로직 구현

 

 

실무 시나리오별 완벽 활용법

시나리오 1: 자동 보고서 생성 시스템

목표: 매주 월요일 오전 9시에 자동으로 주간 보고서를 생성하고 이메일로 발송

 

1단계: 데이터 수집 자동화

function collectWeeklyData() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  var lastWeek = new Date();
  lastWeek.setDate(lastWeek.getDate() - 7);
 
  // 지난 주 데이터 자동 수집
  var salesData = sheet.getRange("A2:E100").getValues();
  var weeklyTotal = 0;
 
  for (var i = 0; i < salesData.length; i++) {
    if (salesData[i] >= lastWeek) {
      weeklyTotal += salesData[i][^23]; // 매출액 합계
    }
  }
 
  return weeklyTotal;
}

 

2단계: 보고서 생성 자동화

function generateWeeklyReport() {
  var totalSales = collectWeeklyData();
  var reportSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("주간보고서");
 
  // 보고서 템플릿에 데이터 자동 입력
  reportSheet.getRange("B2").setValue("주간 매출: " + totalSales.toLocaleString() + "원");
  reportSheet.getRange("B3").setValue("보고서 생성일: " + new Date());
}

 

3단계: 이메일 자동 발송

function sendWeeklyReport() {
  generateWeeklyReport();
 
  // 이메일 자동 발송
  GmailApp.sendEmail(
    "manager@company.com",
    "주간 매출 보고서 - " + new Date().toLocaleDateString(),
    "첨부된 주간 보고서를 확인해 주세요.",
    {
      name: "자동화 시스템"
    }
  );
}

 

4단계: 스케줄링 설정

function setupWeeklyTrigger() {
  // 매주 월요일 오전 9시 자동 실행
  ScriptApp.newTrigger('sendWeeklyReport')
    .timeBased()
    .everyWeeks(1)
    .onWeekDay(ScriptApp.WeekDay.MONDAY)
    .atHour(9)
    .create();
}

 

 

시나리오 2: 실시간 재고 관리 자동화

목표: 재고가 안전 수준 이하로 떨어지면 자동으로 발주 요청 및 알림

 

재고 모니터링 자동화:

function monitorInventory() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("재고관리");
  var data = sheet.getDataRange().getValues();
 
  for (var i = 1; i < data.length; i++) {
    var productName = data[i];    // 상품명
    var currentStock = data[i][^24];   // 현재재고
    var safetyStock = data[i][^25];    // 안전재고
    var supplierEmail = data[i][^26];  // 공급업체 이메일
   
    // 안전재고 이하 감지
    if (currentStock <= safetyStock) {
      createPurchaseOrder(productName, supplierEmail, safetyStock * 2);
      sendLowStockAlert(productName, currentStock, safetyStock);
     
      // 상태 업데이트
      sheet.getRange(i + 1, 5).setValue("발주 요청됨");
      sheet.getRange(i + 1, 6).setValue(new Date());
    }
  }
}

 

 

시나리오 3: 고객 응답 자동 처리 시스템

목표: 구글 폼 응답을 실시간으로 분류하고 담당자에게 자동 배분

 

폼 응답 자동 처리:

function processFormResponses() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("고객문의");
  var responses = sheet.getDataRange().getValues();
 
  for (var i = 1; i < responses.length; i++) {
    var timestamp = responses[i];
    var customerName = responses[i][^24];
    var inquiryType = responses[i][^25];
    var content = responses[i][^26];
    var status = responses[i][^23];
   
    // 미처리 응답만 처리
    if (status !== "처리완료") {
      var assignee = assignToAgent(inquiryType);
      sendToAgent(assignee, customerName, content);
      updateStatus(i + 1, "담당자 배정됨", assignee);
    }
  }
}

function assignToAgent(inquiryType) {
  var assignments = {
    "기술문의": "tech@company.com",
    "결제문의": "billing@company.com",
    "일반문의": "support@company.com"
  };
 
  return assignments[inquiryType] || "support@company.com";
}

 

 

고급 자동화 마스터 기법

1. 트리거 시스템 완전 활용

시간 기반 트리거:

function setupAdvancedTriggers() {
  // 매일 오전 8시 데이터 백업
  ScriptApp.newTrigger('backupData')
    .timeBased()
    .everyDays(1)
    .atHour(8)
    .create();
   
  // 매월 1일 월간 보고서 생성
  ScriptApp.newTrigger('generateMonthlyReport')
    .timeBased()
    .onMonthDay(1)
    .atHour(9)
    .create();
   
  // 매 15분마다 실시간 모니터링
  ScriptApp.newTrigger('monitorSystem')
    .timeBased()
    .everyMinutes(15)
    .create();
}

 

이벤트 기반 트리거:

// 셀 편집 시 자동 실행
function onEdit(e) {
  var range = e.range;
  var sheet = e.source.getActiveSheet();
 
  // 특정 열 편집 시 자동 계산
  if (range.getColumn() == 3) { // C열 편집 시
    var row = range.getRow();
    var value = range.getValue();
   
    // 자동 계산 및 업데이트
    sheet.getRange(row, 4).setValue(value * 1.1); // 10% 할증
    sheet.getRange(row, 5).setValue(new Date());   // 수정일시
  }
}

 

2. 구글 서비스 통합 자동화

Gmail + 드라이브 + 캘린더 통합:

function integratedWorkflow() {
  // 1. Gmail에서 특정 라벨 메일 검색
  var threads = GmailApp.search('label:urgent is:unread');
 
  for (var i = 0; i < threads.length; i++) {
    var messages = threads[i].getMessages();
    var latestMessage = messages[messages.length - 1];
   
    // 2. 첨부파일을 드라이브에 자동 저장
    var attachments = latestMessage.getAttachments();
    for (var j = 0; j < attachments.length; j++) {
      var file = DriveApp.createFile(attachments[j]);
      var fileUrl = file.getUrl();
     
      // 3. 스프레드시트에 파일 정보 기록
      recordFileInfo(latestMessage.getSubject(), fileUrl);
     
      // 4. 캘린더에 처리 일정 자동 생성
      CalendarApp.getDefaultCalendar().createEvent(
        '긴급 문서 처리: ' + latestMessage.getSubject(),
        new Date(),
        new Date(Date.now() + 2 * 60 * 60 * 1000) // 2시간 후
      );
    }
   
    // 5. 메일에 처리완료 라벨 추가
    threads[i].addLabel(GmailApp.getUserLabelByName('처리완료'));
  }
}

 

 

실전 협업 시나리오: 전사 자동화 프로젝트

12명이 참여하는 통합 자동화 시스템

부서별 자동화 역할:

IT팀 (3명):

·        인프라 자동화: 서버 모니터링, 백업, 보안 관리

·        API 연동: 외부 시스템과 스프레드시트 자동 연결

·        고급 스크립트: 복잡한 비즈니스 로직 자동화 구현

마케팅팀 (3명):

·        캠페인 자동화: 광고 성과 자동 수집 및 보고서 생성

·        고객 데이터: 리드 자동 분류 및 담당자 배정

·        소셜 미디어: 콘텐츠 발행 스케줄링 자동화

영업팀 (3명):

·        CRM 자동화: 고객 정보 자동 업데이트 및 활동 추적

·        견적 시스템: 자동 견적서 생성 및 발송

·        파이프라인: 영업 기회 자동 분류 및 알림

재무팀 (3명):

·        회계 자동화: 전표 자동 생성 및 분개 처리

·        예산 관리: 실시간 예산 집행 모니터링

·        세무 신고: 세금 계산 및 신고서 자동 작성

 

 

통합 자동화 워크플로우

Level 1 - 데이터 수집 자동화:

// 전사 데이터 통합 수집
function collectAllDepartmentData() {
  collectSalesData();     // 영업 데이터
  collectMarketingData(); // 마케팅 데이터 
  collectHRData();        // 인사 데이터
  collectFinanceData();   // 재무 데이터
 
  // 통합 대시보드 업데이트
  updateExecutiveDashboard();
}

 

Level 2 - 프로세스 자동화:

// 부서간 연계 프로세스 자동화
function interdepartmentalWorkflow() {
  // 영업 → 재무: 매출 발생 시 자동 전표 생성
  var newSales = detectNewSales();
  if (newSales.length > 0) {
    generateAccountingEntry(newSales);
    notifyFinanceTeam(newSales);
  }
 
  // 마케팅 → 영업: 리드 생성 시 자동 배정
  var newLeads = detectNewLeads();
  if (newLeads.length > 0) {
    assignToSalesRep(newLeads);
    createFollowUpTasks(newLeads);
  }
}

 

 

성능 최적화와 모범 사례

1. 대용량 데이터 처리 최적화

배치 처리로 성능 향상:

function optimizedBatchProcessing() {
  var sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
 
  // 한 번에 전체 데이터 읽기 (개별 셀 접근보다 빠름)
  var data = sheet.getDataRange().getValues();
  var processedData = [];
 
  // 메모리에서 일괄 처리
  for (var i = 1; i < data.length; i++) {
    var processed = processRow(data[i]);
    processedData.push(processed);
  }
 
  // 한 번에 전체 데이터 쓰기
  sheet.getRange(2, 1, processedData.length, processedData.length)
       .setValues(processedData);
}

 

2. 오류 처리 및 로깅

견고한 에러 핸들링:

function robustAutomation() {
  try {
    // 메인 자동화 로직
    executeMainProcess();
   
  } catch (error) {
    // 에러 로깅
    Logger.log('오류 발생: ' + error.toString());
   
    // 관리자에게 알림
    GmailApp.sendEmail(
      'admin@company.com',
      '자동화 시스템 오류',
      '오류 내용: ' + error.toString() + '\n시간: ' + new Date()
    );
   
    // 백업 프로세스 실행
    executeBackupProcess();
  }
}

 

 

자동화 하나의 완전한 구현만으로도 업무 효율성이 300% 이상 향상되고, 인간은 창의적 업무에 집중할 수 있게 됩니다. 여기에 구글 스프레드시트의 클라우드 환경과 협업 기능까지 더해지면, 조직의 업무 DNA가 근본적으로 진화합니다.

더 이상 반복적인 수작업에 소중한 시간을 낭비하지 마세요. 지금 바로 구글 스프레드시트 자동화로 업무 혁신의 첫 발걸음을 시작하세요!