구글 시트 데이터 업데이트 자동 알림 설정: 트리거 기능을 활용한 실시간 업무 감시 시스템

구글 시트 데이터 업데이트 자동 알림 설정: 트리거 기능을 활용한 실시간 업무 감시 시스템

웹사이트 운영이든, 자료 관리든, **’자료가 언제 업데이트되었는지’**를 실시간으로 아는 것은 매우 중요합니다. 새로운 자료가 추가되거나, 중요한 수치가 변동되었을 때 이를 즉시 감지하고 알림을 받는 시스템이 없다면, 중요한 의사결정 시점을 놓치거나 오류 대응이 늦어질 수 있습니다.

구글 스프레드시트(Google Sheets)의 핵심 자동화 도구인 **Apps Script(앱스 스크립트)**와 그 핵심 기능인 **트리거(Trigger)**를 활용하면, 별도의 유료 서비스 없이도 자료 업데이트 자동 알림 시스템을 완벽하게 구축할 수 있습니다.

이 시스템은 정기적인 자료 수집, 협업자의 자료 수정, 외부 폼 제출 등 다양한 상황에서 즉각적인 알림을 제공하여 여러분의 자료 관리 효율을 극대화할 것입니다. 이 글은 Apps Script와 트리거 기능을 활용하여 실시간 감시 시스템을 구축하는 방법을 단계별로 상세히 안내합니다.

1. 자동 알림 시스템의 기반: Apps Script와 Gmail 연동

자동 알림을 위해서는 자료를 감지하는 스크립트와 알림을 전송하는 Gmail 서비스가 필요합니다.

1.1. Apps Script 환경 접근

  1. 구글 시트 메뉴에서 확장 프로그램 > Apps Script를 선택하여 편집기를 엽니다.

  2. 이메일 발송을 위해 MailApp 서비스를 사용할 것이므로, onEdit이나 onFormSubmit과 같은 함수를 작성해야 합니다.

1.2. 스크립트 권한 이해

트리거와 알림 발송은 사용자 계정의 권한이 필요합니다. 스크립트를 처음 실행하거나 트리거를 설정할 때, Gmail 발송 권한시트 접근 권한을 반드시 승인해야 합니다. 이 권한 승인 과정이 시스템이 작동하는 핵심입니다.

2. 트리거 유형별 활용: 자동 알림의 조건 설정

트리거는 스크립트를 실행시키는 ‘방아쇠’ 역할을 합니다. 어떤 상황에 따라 알림을 받을지, 트리거의 유형을 설정하는 것이 중요합니다.

2.1. 시간 기반 트리거 (Time-Driven Trigger)

특정 시간 간격(예: 매일 오전 9시, 1시간마다)으로 자료를 확인하고 정기적인 보고서를 발송할 때 사용됩니다.

  • 활용 예시: 매일 아침 웹사이트의 어제 자료를 확인하여 ‘일일 요약 보고서’를 발송합니다.

  • 트리거 설정: 이벤트 소스를 ‘시간 기반 트리거’로 설정하고, ‘일 타이머’ 또는 ‘시간 간격 타이머’를 선택합니다.

2.2. 스프레드시트 기반 트리거 (Sheet-Driven Trigger)

문서 내에서 특정 이벤트가 발생했을 때 즉시 알림을 보낼 때 사용됩니다. 실시간 감시 시스템의 핵심입니다.

이벤트 유형 스크립트 함수 (간단 예시) 알림 활용 목적
수정 시 (onEdit) onEdit(e) 중요한 자료 셀(예: 수익 집계 셀)이 수동으로 수정되었을 때 감지
변경 시 (onChange) onChange(e) 자료가 붙여넣기, 행 삽입 등 매크로/함수 결과로 인해 변경되었을 때 감지
폼 제출 시 (onFormSubmit) onFormSubmit(e) 웹사이트 피드백 폼 등을 통해 새로운 자료가 추가되었을 때 즉시 알림

3. 실시간 감시 시스템 구축: onEdit 트리거 활용

자료 관리에서 가장 중요한 것은 특정 셀의 값이 변경되었을 때 이를 감지하고 대응하는 것입니다. onEdit(e) 함수와 이벤트 객체 e를 활용합니다.

3.1. onEdit 함수의 기본 구조

onEdit(e) 함수는 사용자가 시트의 셀을 수정할 때마다 자동으로 실행되며, 수정된 셀의 위치, 값, 사용자 등의 정보를 e(이벤트 객체)에 담아 전달합니다.

JavaScript

function onEdit(e) {
  var range = e.range; // 수정된 셀의 범위 (Range 객체)
  var sheetName = range.getSheet().getName(); // 수정된 시트의 이름
  var row = range.getRow(); // 수정된 셀의 행 번호
  var column = range.getColumn(); // 수정된 셀의 열 번호
  var newValue = e.value; // 새로 입력된 값
  
  // 예시: '수익 요약' 시트의 B2 셀이 수정되었을 때만 작동
  if (sheetName === '수익 요약' && row === 2 && column === 2) {
    sendNotification(newValue); // 알림 발송 함수 호출
  }
}

3.2. 조건부 알림: 중요한 자료 변동 시 경고

수익 집계 셀(예: ‘B2’)의 값이 크게 변동되었을 경우에만 알림을 보내는 로직을 구현합니다. 이 때, 수정 전 값을 알아야 비교가 가능합니다.

JavaScript

function onEdit(e) {
  var range = e.range;
  
  if (range.getA1Notation() === 'B2') { // 수정된 셀이 B2일 경우
    var oldValue = e.oldValue; // 수정 전 값 가져오기
    var newValue = e.value;
    
    // 수정 전 값이 존재하고, 변동 폭이 컸을 경우
    if (oldValue && Math.abs(newValue - oldValue) / oldValue > 0.10) { // 10% 이상 변동 시
      var subject = "🚨 경고: B2 셀 자료가 10% 이상 변동됨!";
      var body = "이전 값: " + oldValue + ", 현재 값: " + newValue;
      
      MailApp.sendEmail("admin@example.com", subject, body); // 즉시 알림 발송
    }
  }
}

4. 폼 제출 알림 시스템: onFormSubmit 트리거 활용

웹사이트 피드백, 설문조사, 오류 보고 등 구글 폼으로 자료를 수집할 경우, 새로운 응답이 들어올 때마다 즉시 알림을 받는 것이 중요합니다.

4.1. onFormSubmit 함수의 기본 구조

onFormSubmit(e) 함수는 폼 제출 시 자동으로 실행되며, 제출된 자료를 e.values 등의 형태로 전달받습니다.

JavaScript

function onFormSubmit(e) {
  // 폼 응답 자료는 배열 e.values에 저장됨 (첫 번째 값은 타임스탬프)
  var newResponse = e.values; 
  var timestamp = newResponse[0]; // 타임스탬프
  var feedback = newResponse[3]; // 예를 들어 네 번째 응답 값 (피드백 내용)
  
  // 폼 응답 내용을 이메일 본문에 포함
  var subject = "✅ 새로운 피드백 접수: " + timestamp;
  var body = "제출된 피드백 내용: " + feedback;
  
  // 특정 키워드가 포함될 때만 긴급 알림
  if (feedback.includes('오류') || feedback.includes('문제')) {
     MailApp.sendEmail("emergency@example.com", "🚨 긴급 피드백", body);
  }
}

4.2. 설치 가능한 트리거로 설정

onFormSubmit 함수는 **간단 트리거(Simple Trigger)**로 작동하지 않습니다. 스크립트 편집기에서 설치 가능한 트리거로 설정해야 합니다.

  1. 트리거 메뉴에서 ‘트리거 추가’를 클릭합니다.

  2. 실행할 함수 선택onFormSubmit을 선택합니다.

  3. 이벤트 유형 선택에 **’폼 제출 시’**를 선택합니다.

5. 시스템 안정화 및 유지보수 팁

  • 트리거 대기 시간: onEdit과 같은 일부 트리거는 5분 동안 최대 30초만 실행됩니다. 복잡한 연산이나 외부 API 호출이 필요한 경우 시간 기반 트리거로 분리하는 것이 안정적입니다.

  • 권한 범위 최소화: 시스템 안정성을 위해 필요한 권한만 부여해야 합니다. 알림 발송은 MailApp 서비스 권한만 필요하며, 불필요한 권한은 요청하지 않도록 스크립트를 작성합니다.

  • 로그 확인: 스크립트가 예상대로 작동하지 않을 경우, Apps Script 편집기의 실행 로그를 확인하여 오류 메시지나 실행 과정을 추적해야 합니다. Logger.log() 함수를 사용하여 디버깅 정보를 기록하는 것이 좋습니다.

결론: 능동적 자료 관리를 통한 목표 달성

구글 시트의 트리거 기능은 수동적인 자료 확인 방식에서 벗어나, 능동적으로 자료의 변화를 감시하고 알림을 받는 실시간 시스템을 구축하게 해줍니다. onEdit, onFormSubmit 등의 트리거를 활용하여 중요한 자료 업데이트나 오류 보고를 즉시 감지하고 대응함으로써, 안정적인 웹사이트 운영을 위한 시간 효율성을 극대화하시길 바랍니다.

Similar Posts

답글 남기기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다