
GAS로 학무의 정형 작업을 작게 자동화하고, AI에 전달하기 쉬운 형태로 로그를 남기는 방법
요약
Google Apps Script(GAS)를 활용하여 학무의 반복적인 정형 작업을 작게 자동화하는 방법을 소개합니다. 스프레드시트 데이터를 객체화하여 다루고, AI 프롬프트에 전달하기 적합한 형태로 로그를 정돈하는 실무적인 접근법을 다룹니다.
핵심 포인트
- 열 번호 대신 헤더 이름을 사용하여 데이터 처리의 안정성 확보
- 필요한 정보만 선별하여 AI가 이해하기 쉬운 텍스트 형태로 정돈
- GAS로 프롬프트 재료를 미리 구성하여 AI 활용 효율 극대화
- 처리 과정을 로그로 남겨 사후 검토 및 회고 용이성 증대
학무(校務) 중에는 매번 거의 동일한 절차로 수행하는 작업이 있습니다.
- 폼(Form) 응답 확인
- 스프레드시트(Spreadsheet) 집계
- 미대응자 추출
- 관계자용 문구 작성
- 일별 기록 정리
이러한 작업은 갑자기 커다란 시스템으로 교체하기보다, Google Apps Script (GAS)를 사용하여 "하나의 표", "하나의 알림", "하나의 로그"부터 작게 자동화하면 다루기 쉬워집니다.
이 기사에서는 학무에서 사용하기 좋은 GAS의 사고방식으로서, 스프레드시트를 기점으로 한 처리와 AI에게 상담하기 쉬운 로그 정비 형태를 정리합니다.
이 기사에서는 다음과 같은 스프레드시트를 상정합니다.
| timestamp | name | class | status | note |
|---|---|---|---|---|
| 2026/07/23 08:10 | 山田 太郎 | 1-A | 未対応 | 欠席連絡あり |
| 2026/07/23 08:15 | 佐藤 花子 | 1-B | 対応済 | 保護者へ連絡済み |
GAS에서는 이 표를 "사람이 보기 쉬운 목록"으로 사용하면서, 동시에 "처리하기 쉬운 데이터"로 다룰 수 있습니다.
스프레드시트 처리 시 열 번호에 직접 의존하면, 열의 추가나 정렬 변경에 취약해집니다. 첫 번째 행을 헤더(Header)로 읽어 열 이름으로 다루는 형태로 만들어 두면 나중에 검토하기 쉬워집니다.
function getRowsAsObjects_() {
const sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('responses');
const values = sheet.getDataRange().getValues();
...
이렇게 구성해 두면, 이후 처리에서 row.status나 row.class와 같이 의미 있는 이름으로 참조할 수 있습니다.
학무에서 자주 있는 상황은 "미대응인 것만 보고 싶다"는 처리입니다.
function listPendingRows() {
const rows = getRowsAsObjects_();
const pendingRows = rows.filter(row => row.status === '未対応');
...
이 단계에서는 알림이나 자동 전송까지 진행하지 않아도 충분합니다. 우선 로그(Log)로 출력하여 추출 조건이 올바른지 확인합니다.
AI를 학무에 사용할 경우, 개인정보나 불필요한 상세 내용을 그대로 전달하는 것이 아니라, 필요한 항목만 정리한 텍스트로 만드는 것이 다루기 쉽습니다.
예를 들어, 미대응 목록을 확인용 요약으로 변환합니다.
function buildPendingSummary() {
const rows = getRowsAsObjects_();
const pendingRows = rows.filter(row => row.status === '未対応');
...
여기서는 이름을 포함하지 않고 클래스, 상태, 메모로만 구성했습니다. AI에게 전달하기 전 단계에서 무엇을 포함할지를 GAS 측에서 명시해 두면, 나중에 운용을 재검토하기 쉬워집니다.
GAS로 직접 AI API를 호출하지 않더라도, 프롬프트(Prompt)의 재료를 정돈하는 것만으로도 학무의 효율화로 이어집니다.
function buildPromptForReview() {
const summary = buildPendingSummary();
const prompt = [
...
이와 같이 AI에게 던지기 전의 문장을 GAS로 정돈해 두면, 매번 처음부터 설명을 쓸 필요가 줄어듭니다.
자동화에서는 "무엇을 처리했는가"를 나중에 확인할 수 있는 것이 중요합니다. 처리 결과를 로그용 시트에 남겨 두면 일일 확인이나 회고를 하기 쉬워집니다.
function writeProcessLog(message) {
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheetByName('logs') || ss.insertSheet('logs');
...
미대응 건수를 기록하는 예시입니다.
function logPendingCount() {
const rows = getRowsAsObjects_();
const pendingCount = rows.filter(row => row.status === '未対応').length;
...
학무 자동화는 처음부터 전부를 연결하기보다, 다음 순서로 나누면 확인하기가 더 쉬워집니다.
- 표의 열 이름(Column name)을 결정한다
- 필요한 행(Row)만 추출한다
- 확인용 텍스트를 만든다
- 로그(Log)에 남긴다
- 필요에 따라 알림이나 연동을 추가한다
특히 AI 활용에 있어서는 처음부터 자동 판단까지 맡기는 것이 아니라, "AI에 전달하기 전의 재료를 정돈하는 것"만으로도 효과가 있습니다. GAS는 그 재료를 만드는 데 적합합니다.
GAS로 학무를 다룰 때는 스프레드시트(Spreadsheet)를 단순한 목록이 아니라, 처리의 기점(Starting point)으로 설계하면 다루기 쉬워집니다.
- 열 이름으로 데이터를 다룬다
- '미대응' 등의 조건으로 추출한다
- AI에 전달하기 쉬운 요약을 만든다
- 처리 로그를 남긴다
이 4가지를 파악해 두면, 학무의 정형 작업을 작게 자동화하면서 AI 활용으로도 쉽게 연결할 수 있습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Qiita AI의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기