
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: 독립 실행형 스크립트
- https://script.google.com 접속
- 새 프로젝트 클릭
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);
}
}
수동 트리거 설정 방법:
- 스크립트 에디터에서 트리거 아이콘 (⏰) 클릭
- 트리거 추가 클릭
- 함수 선택 및 조건 설정
- 저장 클릭
🌐 웹 앱으로 배포하기
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>
`);
}
배포 방법:
- 우측 상단 배포 → 새 배포 클릭
- 유형: 웹 앱 선택
- 액세스 권한 설정
- 배포 클릭 → 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 #업무자동화 #스크립트