앱스스크립트로 만드는 과제 알림 시스템

소개

사례 발표 안내를 수시로 해주시는데도 시간가는 줄 모르고 사례를 깜빡하는 저 같은 학생들에게 필요한 과제 알림 시스템을 만들어보기로 했습니다.

마감 이틀 전 자동으로 메일을 발송하고, 중복 알림은 방지

진행 방법

활용도구 : 구글 스프레드시트, 앱스스크립트, chat gpt, 클로드

• 구글스프레드시트 구성

A열 : 명단

B열 : 이메일 주소

C열 : 과제명

D열 : 마감일

E열 : 알림보냄

F열 : 제출

**실행 확인하기 위해서 마감일을 오늘 날짜로 설정하여 테스트

•앱스크립트 코드

function sendAssignmentReminders() {
  const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet();
  const data = sheet.getDataRange().getValues();

  const today = new Date();
  const reminderDaysBefore = 2;

  for (let i = 1; i < data.length; i++) {
    const name = data[i][0];
    const email = data[i][1];
    const assignment = data[i][2];
    const dueDate = new Date(data[i][3]);
    const notified = data[i][4];
    const submitted = data[i][5];

    if (submitted === "✅" || notified === "✅") continue;

    const timeDiff = (dueDate - today) / (1000 * 60 * 60 * 24);
    if (timeDiff <= reminderDaysBefore && timeDiff >= 0) {
      const subject = `[과제 알림] "${assignment}" 마감 D-${Math.ceil(timeDiff)}`;
      const body = `안녕하세요 ${name} 학생,\n\n` +
                   `"${assignment}" 과제의 마감일은 ${dueDate.toLocaleDateString()}입니다.\n` +
                   `제출을 잊지 말고 꼭 확인해주세요!\n\n` +
                   `감사합니다.`;

      MailApp.sendEmail(email, subject, body);
      sheet.getRange(i + 1, 5).setValue("✅"); // 알림보냄 칸 ✅로 변경
    }
  }
}

결과

• 수신 메일

한국어로 된 메시지는 흰색 배경에 쓰여졌다

**확인 후 트리거 설정하여 자동화 설정

• 확장하고 싶은 사항

마감일 전/후 다단계 알림 (예: D-3, D-Day, D+1)

제출 상태를 자동 감지 할 수 있는 요소

느낀 점

15기 지피터스에 일원이 된 것이 저에게 배움이 컸고 게으른 저의 일상에 반성도 많이 하게 된 계기가 되었습니다. 앱스스크립트는 처음 접할 땐 생소했지만, chat gpt와 클로드가 알아서 코드를 짜주고 오류까지 잡아서 보완해주어 강력한 자동화를 척척 만들어 내는 것이 놀라웠습니다. 비록 아직 실력이 부족해 깊이감은 얕지만 쉽게 접근해 만들어 볼 수 있는 동기부여는 강력하다고 생각됩니다~^^ 지피터스 화이팅!!!!

3
1개의 답글

뉴스레터 무료 구독

👉 이 게시글도 읽어보세요