프로젝트 목록

연구소 업무 스케줄러 (담당표)

Internal Tool2026.05 ~ 2026.07

연구소 3인 팀의 담당표, 업무, 근무일정, 연간 일정을 한 화면에 모은 웹앱입니다. 구글 시트를 저장소로, Apps Script를 API로, GitHub Pages를 호스팅으로 써서 운영비 없이 돌아갑니다.

Role
기획, 개발
Team
1명 (팀원 3명이 사용)
Scale
코드 약 4,700줄
커밋 57개
Stack
JavaScript, Google Apps Script, Google Sheets, PWA

Overview

연구소는 담당표와 업무를 구글 시트 하나로 관리했습니다. 내용이 늘수록 스크롤이 길어지고 휴대폰으로 보기 어려웠습니다. 시트의 데이터는 그대로 두고, 시트로는 불편했던 화면과 알림, 반복 작업을 웹앱으로 얹었습니다.

Why

겪던 불편바꾼 방법
시트가 길어지면 스크롤이 끝없고 휴대폰으로 보기 어려움한 화면 대시보드, 모바일 반응형, 앱처럼 설치하는 PWA
3주마다 담당 연구원이 바뀌어 매번 차례를 손으로 계산기준 날짜로부터 3주 순환을 자동 계산하고 오늘 담당자를 강조
다른 일을 하다 보면 원래 업무를 놓침마감 카운트다운 배지, 누락 업무 모아 보기, 당일 마감 브라우저 알림
행사와 외부 미팅이 잦아 한눈에 볼 곳이 필요2026~2027 연간 캘린더, 한국 공휴일 내장
작은 팀이라 누가 쉬는지 바로 알아야 함근무일정에서 연차와 반차를 뽑아 캘린더에 표시, 7일 안의 휴무 강조
회고 때 한 일을 기억하기 어려움완료 업무를 자동으로 보관하고 담당자와 기간으로 다시 보기

Problem Solving

저장할 때마다 화면이 멈춘 것처럼 보임

문제
Apps Script 응답이 가끔 크게 느려져, 저장 응답을 기다리는 동안 화면이 멈춰 있었습니다.
해결
화면에 먼저 반영하고 저장 요청은 뒤에서 보내는 방식(낙관적 업데이트)으로 바꿨습니다. 실패할 때만 서버 데이터로 되돌리고, 요청에는 시간 제한을 걸어 무한 대기를 막았습니다.
결과
업무 추가, 완료 체크, 담당 변경이 누르는 즉시 화면에 보입니다.

자동 갱신 때마다 전체 데이터를 받으면 무거움

문제
여러 사람이 같은 화면을 보므로 자동 갱신이 필요했지만, 30초마다 모든 시트 데이터를 받으면 무거웠습니다.
해결
서버에 데이터의 버전 값(해시)만 먼저 묻고, 바뀌었을 때만 전체를 받아 다시 그리게 했습니다.
결과
아무도 수정하지 않는 동안에는 가벼운 확인 요청만 오갑니다.

달이 바뀔 때마다 근무일정 날짜를 손으로 고침

문제
근무일정 시트는 달이 바뀔 때마다 날짜를 손으로 새로 써야 했습니다.
해결
매일 새벽 1시에 도는 예약 작업이 달이 바뀐 것을 확인하면, 일요일을 뺀 그 달 날짜로 바꾸고 근무 패턴과 서식은 그대로 둡니다. 6주가 필요한 달은 마지막 주 칸을 자동으로 늘립니다.
결과
매달 손으로 하던 일이 없어졌습니다.

Looking Back

팀 안에서만 쓰는 도구라 인증을 단순하게 두었습니다. 운영하면서 코드를 직접 점검해, 정식 서비스로 바꾼다면 필요한 인증, 입력값 처리, API 구조 개선안을 따로 정리해 두었습니다.