Google Apps Script 사용법 완벽 가이드 📝

안녕하세요! 오늘은 Google Workspace를 자동화할 수 있는 강력한 도구인 Google Apps Script 사용법을 단계별로 자세히 알려드리겠습니다. 업무 자동화가 필요하신 분들이나 Google Sheets, Gmail을 코드로 제어하고 싶으신 분들께 큰 도움이 되실 거예요.

🚀 Google Apps Script란?

Google Apps Script는 Google에서 제공하는 클라우드 기반 JavaScript 플랫폼입니다. 복잡한 서버 설정 없이 브라우저에서 바로 코드를 작성하고 실행할 수 있어요.

주요 특징:

  • Google Sheets, Gmail, Drive 등 Google 서비스 자동화
  • 서버 없이 클라우드에서 실행
  • JavaScript 기반으로 접근성 높음
  • 무료로 사용 가능

📝 시작하기 - 단계별 가이드

1단계: 스크립트 에디터 열기

Google Apps Script를 사용하는 방법은 크게 두 가지입니다.

방법 1: Google Sheets에서 직접 열기

  • Google Sheets 문서 열기
  • 상단 메뉴에서 확장 프로그램 → Apps Script 클릭

방법 2: 독립 실행형 스크립트

2단계: 첫 번째 스크립트 작성하기

이제 간단한 코드를 작성해보겠습니다.

function myFirstFunction() {
  // 로그에 메시지 출력
  Logger.log('Hello, Google Apps Script!');
  
  // 브라우저 알림 표시
  Browser.msgBox('안녕하세요!');
}

3단계: 스크립트 실행하기

  • 상단 함수 선택 드롭다운에서 myFirstFunction 선택
  • 실행 버튼 (▶️) 클릭
  • 최초 실행 시 권한 승인 필요 → 허용 클릭
  • 보기 → 로그 또는 Ctrl+Enter로 결과 확인

⚡ 실전 활용 예제

예제 1: Google Sheets 데이터 읽기/쓰기

function readWriteSheet() {
  // 활성 시트 가져오기
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  
  // A1 셀 값 읽기
  const value = sheet.getRange('A1').getValue();
  Logger.log('A1 셀 값: ' + value);
  
  // B1 셀에 값 쓰기
  sheet.getRange('B1').setValue('안녕하세요');
  
  // 데이터 일괄 쓰기
  const newData = [
    ['이름', '나이', '직업'],
    ['홍길동', 30, '개발자'],
    ['김철수', 25, '디자이너']
  ];
  sheet.getRange(1, 1, 3, 3).setValues(newData);
}

예제 2: 자동 이메일 발송

시트에 있는 이메일 목록으로 자동 발송하는 스크립트입니다.

function sendEmailFromSheet() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const data = sheet.getDataRange().getValues();
  
  // 첫 번째 행은 헤더이므로 2번째 행부터 시작
  for (let i = 1; i < data.length; i++) {
    const email = data[i][0];      // A열: 이메일 주소
    const name = data[i][1];       // B열: 이름
    const message = data[i][2];    // C열: 메시지
    
    // 이메일 발송
    GmailApp.sendEmail(
      email,
      '자동 발송 메일',
      `${name}님께,\n\n${message}\n\n감사합니다.`
    );
    
    // 발송 완료 표시
    sheet.getRange(i + 1, 4).setValue('발송완료');
  }
  
  Browser.msgBox('이메일 발송이 완료되었습니다.');
}

예제 3: Gmail 첨부파일 자동 저장

function saveAttachmentsToDrive() {
  // 첨부파일이 있는 이메일 검색
  const threads = GmailApp.search('has:attachment', 0, 5);
  const folder = DriveApp.getFolderById('YOUR_FOLDER_ID');
  
  threads.forEach(thread => {
    const messages = thread.getMessages();
    
    messages.forEach(message => {
      const attachments = message.getAttachments();
      
      attachments.forEach(attachment => {
        // Drive에 파일 저장
        folder.createFile(attachment);
        Logger.log('저장: ' + attachment.getName());
      });
    });
  });
}

🔄 자동 실행 설정 - 트리거

가장 강력한 기능 중 하나는 트리거입니다. 특정 시간이나 이벤트가 발생했을 때 자동으로 스크립트를 실행할 수 있어요.

시간 기반 트리거

function createTimeTrigger() {
  // 매일 오전 9시에 실행
  ScriptApp.newTrigger('myFunction')
    .timeBased()
    .atHour(9)
    .everyDays(1)
    .create();
  
  // 매주 월요일 오전 10시
  ScriptApp.newTrigger('weeklyReport')
    .timeBased()
    .onWeekDay(ScriptApp.WeekDay.MONDAY)
    .atHour(10)
    .create();
}

이벤트 기반 트리거

시트를 편집할 때마다 자동으로 실행되는 함수입니다.

function onEdit(e) {
  const sheet = e.source.getActiveSheet();
  const range = e.range;
  
  // A열 수정 시 B열에 타임스탬프 자동 입력
  if (range.getColumn() === 1) {
    const timestamp = new Date();
    sheet.getRange(range.getRow(), 2).setValue(timestamp);
  }
}

수동 트리거 설정 방법:

  1. 스크립트 에디터에서 트리거 아이콘 (⏰) 클릭
  2. 트리거 추가 클릭
  3. 함수 선택 및 조건 설정
  4. 저장 클릭

🌐 웹 앱으로 배포하기

Google Apps Script로 간단한 웹 애플리케이션도 만들 수 있습니다.

function doGet() {
  return HtmlService.createHtmlOutput(`
    <html>
      <body>
        <h1>Google Apps Script 웹 앱</h1>
        <p>현재 시간: ${new Date()}</p>
        <button onclick="google.script.run.getData()">데이터 가져오기</button>
        <div id="result"></div>
        
        <script>
          function showData(data) {
            document.getElementById('result').innerHTML = data;
          }
        </script>
      </body>
    </html>
  `);
}

배포 방법:

  1. 우측 상단 배포 → 새 배포 클릭
  2. 유형: 웹 앱 선택
  3. 액세스 권한 설정
  4. 배포 클릭 → URL 복사

💡 유용한 팁과 Best Practice

✅ 권장사항

1. 효율적인 API 호출

// ❌ 비효율적 - 100번 API 호출
function inefficientCode() {
  const sheet = SpreadsheetApp.getActiveSheet();
  for (let i = 1; i <= 100; i++) {
    sheet.getRange(i, 1).setValue(i);
  }
}

// ✅ 효율적 - 1번만 API 호출
function efficientCode() {
  const sheet = SpreadsheetApp.getActiveSheet();
  const values = [];
  
  for (let i = 1; i <= 100; i++) {
    values.push([i]);
  }
  
  sheet.getRange(1, 1, 100, 1).setValues(values);
}

2. 에러 처리

function debugExample() {
  try {
    const sheet = SpreadsheetApp.getActiveSheet();
    const data = sheet.getRange('A1:A10').getValues();
    
    Logger.log('데이터 개수: ' + data.length);
    
  } catch (error) {
    // 에러 로그 기록
    Logger.log('에러 발생: ' + error.message);
    
    // 이메일로 에러 알림
    MailApp.sendEmail(
      Session.getActiveUser().getEmail(),
      '스크립트 오류',
      error.message
    );
  }
}

3. 실행 시간 제한 대응

Google Apps Script는 6분 실행 제한이 있습니다. 대용량 데이터 처리 시 배치 처리를 활용하세요.

function processLargeData() {
  const properties = PropertiesService.getScriptProperties();
  let lastRow = parseInt(properties.getProperty('lastProcessedRow') || '1');
  
  const batchSize = 100; // 한 번에 100개씩 처리
  const maxRow = lastRow + batchSize;
  
  // 데이터 처리 로직...
  
  // 진행 상황 저장
  properties.setProperty('lastProcessedRow', maxRow.toString());
}

❌ 피해야 할 것들

  • 반복문 안에서 API 반복 호출
  • 에러 처리 없이 스크립트 실행
  • 민감한 정보를 코드에 직접 하드코딩
  • 트리거 중복 생성

🛡️ 보안 주의사항

중요한 정보 관리:

  • API 키나 비밀번호는 PropertiesService 활용
  • 스크립트 공유 시 권한 주의
  • 정기적인 코드 리뷰
// 안전한 정보 저장
function saveSecretKey() {
  const properties = PropertiesService.getScriptProperties();
  properties.setProperty('API_KEY', 'your-secret-key');
}

// 정보 불러오기
function getSecretKey() {
  const properties = PropertiesService.getScriptProperties();
  return properties.getProperty('API_KEY');
}

🔧 자주 발생하는 오류 해결

오류 1: "Exception: You do not have permission"

원인: 필요한 권한이 승인되지 않음
해결: 스크립트 실행 시 권한 승인 팝업에서 허용 클릭

오류 2: "Exception: Service invoked too many times"

원인: API 호출 한도 초과
해결: 일괄 처리 메서드 사용 (getValues(), setValues())

오류 3: "ReferenceError: SpreadsheetApp is not defined"

원인: 잘못된 실행 환경
해결: 스크립트가 Google Sheets와 연결되어 있는지 확인

📌 마무리

Google Apps Script는 JavaScript 기반으로 Google Workspace를 자유롭게 제어할 수 있는 강력한 도구입니다.

핵심 요약:

  • 서버 없이 클라우드에서 실행되는 JavaScript
  • Google Sheets, Gmail, Drive 등 모든 Google 서비스 연동 가능
  • 트리거로 자동화 구현 (시간/이벤트 기반)
  • 웹 앱 배포로 간단한 서비스 제작 가능

다음 단계 학습 추천:

  • Google Apps Script 라이브러리 활용
  • 외부 API 연동하기
  • HTML Service로 고급 웹 UI 제작
  • 복잡한 비즈니스 로직 구현

더 궁금한 점이 있으시면 댓글로 남겨주세요! 도움이 되셨다면 공감♥과 구독 부탁드립니다.

참고자료:

태그: #GoogleAppsScript #JavaScript #자동화 #GoogleSheets #Gmail #구글워크스페이스 #GAS #업무자동화 #스크립트

+ Recent posts