Skip to content

Latest commit

 

History

History
167 lines (128 loc) · 6.04 KB

3.sheetsToDocs.md

File metadata and controls

167 lines (128 loc) · 6.04 KB

실습 3: 스프레드시트에서 수능 성적표 생성하기

이 실습에서는 Google Sheets에서 특정 칼럼이 체크되면 Google Docs에 자동으로 수능 성적표를 생성하는 시스템을 구축합니다.
또한, 추가 실습으로 생성된 성적표의 링크를 Slack으로 전송하는 기능도 구현합니다.


1. Google Sheets 설정

📌 1-1. 스프레드시트 생성

  1. Google Sheets에서 새로운 스프레드시트를 생성합니다.
  2. 첫 번째 행에 다음 헤더를 추가합니다:
    • A열: 이름
    • B열: 출생년도
    • C열: 국어 점수
    • D열: 영어 점수
    • E열: 수학 점수
    • F열: 지원 가능 대학 목록
    • G열: 성적표 생성 (체크박스 추가)

📌 1-2. 체크박스 추가

  1. **G열(성적표 생성)**을 선택합니다.
  2. 상단 메뉴 → 삽입 → 체크박스를 클릭하여 체크박스 추가

2. Google Apps Script 작성

📌 2-1. Apps Script 편집기 열기

  1. 스프레드시트 상단 메뉴에서 확장 프로그램 → Apps Script를 클릭합니다.

📌 2-2. Google Docs 성적표 생성 스크립트 작성

아래 스크립트를 복사하여 입력합니다:

// 성적표 템플릿 설정
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);
}

3. 트리거 설정

📌 3-1. 트리거 추가하기

  1. **Apps Script 편집기에서 왼쪽 시계 아이콘(트리거)**을 클릭

  2. "트리거 추가" 버튼 클릭

  3. 다음과 같이 설정:

    • 함수 선택: onEdit
    • 이벤트 소스: 스프레드시트
    • 이벤트 유형: 수정 시
  4. 저장 후 트리거 활성화


4. 테스트 실행

📌 4-1. 테스트 데이터 입력

Google Sheets에 다음과 같은 테스트 데이터를 입력합니다:

이름 출생년도 국어 점수 영어 점수 수학 점수 지원 가능 대학 목록 성적표 생성
홍길동 2005 90 85 95 서울대, 연세대, 고려대 ✅ (체크)

📌 4-2. 체크박스 클릭

  1. G열(성적표 생성) 체크박스를 클릭합니다.
  2. 자동으로 Google Docs가 생성되고, Slack에 알림이 전송됩니다.
  3. Google Sheets의 H열생성된 문서 링크가 자동 입력됩니다.

✅ 실습 결과

  • Google Sheets에서 체크박스를 클릭하면 자동으로 Google Docs에 성적표가 생성됨
  • 생성된 성적표는 Google Drive의 지정된 폴더에 저장됨
  • Slack으로 성적표 생성 알림이 자동 전송됨

📌 추가 실습: 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 변환 후 이메일 전송 기능을 추가해볼 수도 있습니다.