이 실습에서는 Google Sheets에서 특정 칼럼이 체크되면 Google Docs에 자동으로 수능 성적표를 생성하는 시스템을 구축합니다.
또한, 추가 실습으로 생성된 성적표의 링크를 Slack으로 전송하는 기능도 구현합니다.
- Google Sheets에서 새로운 스프레드시트를 생성합니다.
- 첫 번째 행에 다음 헤더를 추가합니다:
A열
: 이름B열
: 출생년도C열
: 국어 점수D열
: 영어 점수E열
: 수학 점수F열
: 지원 가능 대학 목록G열
: 성적표 생성 (체크박스 추가)
- **
G열(성적표 생성)
**을 선택합니다. - 상단 메뉴 → 삽입 → 체크박스를 클릭하여 체크박스 추가
- 스프레드시트 상단 메뉴에서 확장 프로그램 → Apps Script를 클릭합니다.
아래 스크립트를 복사하여 입력합니다:
// 성적표 템플릿 설정
const FOLDER_ID = "YOUR_GOOGLE_DRIVE_FOLDER_ID"; // 생성된 성적표를 저장할 Google Drive 폴더 ID
const SLACK_WEBHOOK_URL = "YOUR_SLACK_WEBHOOK_URL"; // Slack 알림을 보낼 Webhook URL
function onEdit(e) {
const sheet = e.source.getActiveSheet();
const range = e.range;
const column = range.getColumn();
const row = range.getRow();
const generateColumn = 7; // G열(성적표 생성) 체크박스 위치
// 체크박스가 클릭되었을 때 실행
if (column === generateColumn && range.getValue() === true) {
createReport(row);
}
}
function createReport(row) {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
const name = sheet.getRange(row, 1).getValue();
const birthYear = sheet.getRange(row, 2).getValue();
const koreanScore = sheet.getRange(row, 3).getValue();
const englishScore = sheet.getRange(row, 4).getValue();
const mathScore = sheet.getRange(row, 5).getValue();
const universityList = sheet.getRange(row, 6).getValue();
// Google Docs 생성
const doc = DocumentApp.create(`${name} 수능 성적표`);
const body = doc.getBody();
body.appendParagraph(`📄 ${name} 수능 성적표`);
body.appendParagraph(`출생년도: ${birthYear}`);
body.appendParagraph("\n📊 성적");
body.appendParagraph(`국어: ${koreanScore}점`);
body.appendParagraph(`영어: ${englishScore}점`);
body.appendParagraph(`수학: ${mathScore}점`);
body.appendParagraph("\n🏫 지원 가능 대학 목록");
body.appendParagraph(universityList);
// 문서 저장 위치 설정
const docFile = DriveApp.getFileById(doc.getId());
const folder = DriveApp.getFolderById(FOLDER_ID);
folder.addFile(docFile);
DriveApp.getRootFolder().removeFile(docFile);
// Google Docs 링크 가져오기
const docUrl = doc.getUrl();
sheet.getRange(row, 8).setValue(docUrl); // H열에 문서 링크 저장
// Slack 알림 전송
sendSlackNotification(name, docUrl);
}
function sendSlackNotification(name, docUrl) {
const message = {
text: `📢 ${name}님의 수능 성적표가 생성되었습니다! 🎉\n문서 확인하기: ${docUrl}`
};
const options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
}
-
**Apps Script 편집기에서 왼쪽 시계 아이콘(트리거)**을 클릭
-
"트리거 추가" 버튼 클릭
-
다음과 같이 설정:
- 함수 선택:
onEdit
- 이벤트 소스: 스프레드시트
- 이벤트 유형: 수정 시
- 함수 선택:
-
저장 후 트리거 활성화
Google Sheets에 다음과 같은 테스트 데이터를 입력합니다:
이름 | 출생년도 | 국어 점수 | 영어 점수 | 수학 점수 | 지원 가능 대학 목록 | 성적표 생성 |
---|---|---|---|---|---|---|
홍길동 | 2005 | 90 | 85 | 95 | 서울대, 연세대, 고려대 | ✅ (체크) |
G열(성적표 생성)
체크박스를 클릭합니다.- 자동으로 Google Docs가 생성되고, Slack에 알림이 전송됩니다.
- Google Sheets의
H열
에 생성된 문서 링크가 자동 입력됩니다.
- Google Sheets에서 체크박스를 클릭하면 자동으로 Google Docs에 성적표가 생성됨
- 생성된 성적표는 Google Drive의 지정된 폴더에 저장됨
- Slack으로 성적표 생성 알림이 자동 전송됨
Slack 알림을 더 직관적으로 만들려면 별도 이모지와 서식을 추가할 수 있습니다.
function sendSlackNotification(name, docUrl) {
const message = {
text: `📢 *${name}님의 수능 성적표가 생성되었습니다!* 🎉\n\n📄 *문서 확인하기:* <${docUrl}|여기 클릭>`
};
const options = {
method: "post",
contentType: "application/json",
payload: JSON.stringify(message)
};
UrlFetchApp.fetch(SLACK_WEBHOOK_URL, options);
}
이렇게 하면 Slack 메시지에 클릭 가능한 링크가 포함됩니다. 🎯
이제 스프레드시트 데이터를 기반으로 Google Docs를 자동 생성하고 Slack으로 알림을 보내는 자동화 시스템이 완성되었습니다!
추가적으로 Google Drive에서 파일 관리 기능을 추가하거나, PDF 변환 후 이메일 전송 기능을 추가해볼 수도 있습니다.