← 자율스터디 제출물 목록
AI 마에스트로 자율스터디 · 6주차 결과물 (마감 10. 1.)

6주차 — GAS 자동화 앱 배포
— 연구진흥과 창구: 어디에 물을지 고르지 않아도 되는 입구 하나

부산대학교 연구진흥과 · 2026. 9. 30.
한 줄 요약: 하시려는 일을 한 줄로 적으면 공개된 지침표에서 찾아 근거와 함께 보여 주고, 규정봇·공고봇·취합봇으로 가는 출구 셋을 여는 웹앱 「연구진흥과 창구」를 Google Apps Script 웹 앱으로 배포했습니다. 첫 화면에서는 부산대 마스코트 산지니가 안내합니다. 적은 내용은 화면 밖으로 나가지 않고(서버로 보내지 않음), 서버는 화면을 내려 주고 익명 사용 횟수만 셉니다.
배포 주소: https://script.google.com/macros/s/AKfycbzX3jH00kiiS46d3krmwfoBe7PT1jClHbHcydlXWcpvWUYZtfpcX1FmyUCrSatm744ZOQ/exec

그래서 여러분은 이것만 하면 됩니다 — 처음이어도 그대로 따라 하면 됩니다

  1. ① 우리 부서에 자주 오는 질문을 세 갈래로 적어 봅니다 → 예: "규정이 궁금하다 / 공고를 보고 싶다 / 회의 자료를 내야 한다". 갈래마다 지금 안내하는 곳(노트북·시트·웹 화면 주소)을 한 줄씩.
  2. ② 클로드 앱 상단 [Code] 탭 → 바탕화면에 새 폴더를 만들고 열어서 아래 문장을 그대로 붙여 넣으세요. 갈래 이름과 주소만 여러분 부서 것으로 바꾸면 됩니다.
    우리 부서 업무 창구 웹앱을 Google Apps Script로 만들어 줘. 첫 화면은 검색창 하나와 예시 버튼 몇 개, 그 아래 출구 세 개(규정 · 공고 · 주간회의).
    적은 말은 화면 안에 넣어 둔 공개 지침표에서 찾아 근거 조항과 함께 보여 주고, 못 찾으면 담당자에게 넘겨 줘.
    출구마다 실제 도구로 가는 버튼을 달되, 주소는 links.json 한 파일에만 적게 해 줘.
    규칙: 적은 내용은 서버로 보내지 말고 저장하지도 마. 주민등록번호·계좌번호 같은 형태가 보이면 멈추고 알려 줘.
    서버 파일(Code.gs)은 화면을 내려 주는 doGet과 익명 사용 횟수 세기만 해.
    테스트를 먼저 만들어서(node로 돌아가게) 전부 통과한 뒤에 알려 주고,
    배포 방법(웹 앱, 실행 계정 = 나, 액세스 = 모든 사용자)을 처음 하는 사람 기준으로 README에 적어 줘.
  3. ③ 배포하고 휴대폰으로 열어 봅니다 → script.google.com → 새 프로젝트 → 파일 붙여 넣기 → 배포 → 새 배포 → 웹 앱 → 나온 주소를 PC·휴대폰·카톡 안에서 한 번씩 엽니다. 화면별 순서는 맨 아래에 있습니다.

1문제 — 도구가 셋이 되자, "어디에 물어야 하지?"부터 고르게 됐습니다

그동안 규정 Q&A 봇, 연구공고봇, 주간회의 취합봇을 만들고 다듬었습니다(1~3주차 결과물). 도구가 늘어날수록 쓰는 사람은 질문하기 전에 "이건 어느 도구에 물을 일인가"를 먼저 골라야 합니다. 고르는 일이 한 번 더 생기면 도구를 쓰는 이유가 줄어듭니다. 그래서 도구를 하나 더 만드는 대신 입구를 하나로 모았습니다. 자주 묻는 한도·기준은 입구에서 바로 답하고, 더 깊은 것은 출구로 넘깁니다.

있던 것

도구 세 개

규정봇(노트북), 공고봇(메일·대시보드 시트), 취합봇(웹 화면). 각각은 잘 돌지만 문이 셋.

이번 주

문 하나 + 출구 셋

한 줄로 묻는 창구. 자주 묻는 것은 공개 지침표에서 바로 답하고, 나머지는 출구 버튼으로 각 도구에.

2무엇을 하나 — 한 줄을 적으면 답과 출구가 나옵니다

하시려는 일 한 줄▶ 화면 안 공개 지침표에서 찾기▶ 답 카드(근거 조항) · 출구 1 규정 · 출구 2 공고 · 출구 3 주간회의
적은 말(예)보여 주는 것출구 버튼
회의비 1인 한도가 얼마예요?답 카드: 1인 한도·결제 수단·제외되는 때·필요한 서류·안 되는 것 + 근거(사업비 집행 지침 §9 등)규정봇 열기 (학교 계정 · 파일 올리지 말라는 주의 함께)
새로 뜬 공고 있나요출구 2 — 매일 아침 열 시에 오는 공고 메일의 모습공고봇 대시보드 (보기 전용 시트)
주간회의 자료 내야 해요출구 3 — 입력 한 번에서 회의자료 한 장으로 모아 보기까지(가명 시연 · 한글 파일로 합치기는 다음 단계)취합봇 (가명 데모)
지침표에 없는 질문지어내지 않고 담당자에게 넘김—
주민등록번호·계좌번호 형태가 섞인 글멈춤 — 세지도 보내지도 않고 빼고 다시 적어 달라고 안내—

공개 페이지에 실리는 판이라 출구에는 공개돼도 안전한 주소만 달았습니다. 규정봇은 초대받은 학교 계정만 열리고, 취합봇은 가명으로 만든 데모로 연결합니다.

3구조 — 원본 하나에서 두 판, 주소는 한 곳에

Code.gs

서버: 화면 내려 주기 + 횟수

  • doGet으로 화면을 내려 줌
  • 익명 사용 횟수만 셈(질문 한 번 = ask, 출구 열기 = exit)
  • 입력을 받는 길(doPost, 요청 값 읽기)·시트·메일 호출이 없음
index.html

화면: 답 · 출구 · 산지니

  • 검색·답 찾기가 모두 브라우저 안에서
  • 공개 지침표·글꼴·산지니 그림까지 파일 하나(약 260KB)
  • 원본 하나에서 시연판(파일 하나, 서버 없이)과 배포판을 따로 빌드
links.json · appsscript.json

출구 주소 · 배포 설정

  • 출구 주소는 links.json 한 곳에만. https 주소만 버튼이 됨
  • 웹 앱 = 배포한 사람 권한으로 실행, 누구나 열 수 있음
  • 시간대 Asia/Seoul

지키기로 한 것을 검사로 묶었습니다 — 배포판 31개 · 시연판 47개, 전부 통과해야 배포

// 화면 코드를 그대로 꺼내 node에서 돌리는 검사(일부)
✓ fetch·XHR·sendBeacon·form action·WebSocket 이 없다 · 브라우저 저장소를 쓰지 않는다
✓ 서버 함수는 recordUse·getStats 둘뿐이고, 보내는 값은 ask·exit 뿐(적은 말은 안 보냄)
✓ 개인정보가 섞인 질문은 세지도 보내지도 않는다
✓ 회의비를 물으면 답이 나오고, 찾지 못하면 담당자로 넘긴다
✓ 주소가 비면 "설정되지 않았습니다"만 보이고 버튼은 없다 · https 주소만 버튼이 된다
✓ 규정봇 버튼 아래엔 파일을 올리지 말라는 주의가 붙는다
✓ 부서용(실명 명단) 취합봇 주소는 들어가지 않고, 취합봇 출구는 가명 데모로 간다
✓ Code.gs는 doGet만 있고 doPost가 없다 · 요청 값·시트·메일·URL 호출을 쓰지 않는다
✓ 특정 AI 제품 이름이 없다 · 휴대폰 화면 대비 · 파일 450KB 미만 · 검색 제외(noindex)

누가 나중에 "편하게" 전송이나 저장을 넣으면 위 검사가 바로 빨간색이 됩니다. 새 기능은 검사를 먼저 쓰고(빨강) 화면을 고쳐(초록) 올립니다. 화면 코드와 검사는 Claude Code가 작성했고, 코드는 직접 쓰지 않았습니다.

4결과 — 배포했고, 한 번 써 봤습니다

항목내용
배포 주소https://script.google.com/macros/s/AKfycbzX3jH00kiiS46d3krmwfoBe7PT1jClHbHcydlXWcpvWUYZtfpcX1FmyUCrSatm744ZOQ/exec (Apps Script 웹 앱, 로그인 없이 열림)
열어 본 곳PC 크롬 · 휴대폰 · 카톡 안 브라우저 — 로그인 없이 열리고, 질문하면 사용 횟수가 서버와 이어짐(9/30 · 휴대폰·카톡은 화면 폭과 브라우저 흉내로 확인)
사용 횟수3회 (익명, 질문·출구 열기를 센 횟수 · 9/30 만든 사람의 시험 포함)
써 본 사람 한마디아직 없음(9/30 배포)
연구진흥과 창구 첫 화면: 산지니와 검색창 하나, 예시 버튼
창구 첫 화면. 산지니가 안내하고, "무엇을 도와드릴까요?" 한 줄 입력과 예시 버튼.
휴대폰 화면에서 본 연구진흥과 창구
휴대폰(390px). 가로로 넘치지 않음.
회의비 한도를 물으면 공개 지침표의 답과 근거가 나오고, 아래에 출구 셋이 보이는 화면
회의비 한도를 물으면 공개 지침표에서 찾은 답과 근거가 나오고, 아래에 출구 셋이 이어집니다.

5정직하게, 지금 단계 — 된 것 / 안 된 것 / 다음

구분내용
된 것입구 하나(답 카드 + 출구 셋)를 Apps Script 웹 앱으로 배포. 원본 하나에서 시연판·배포판을 빌드하고 검사 31개·47개 통과. 휴대폰 크기(390px) 화면에서 가로로 넘치지 않음 확인. 적은 말은 화면 밖으로 나가지 않음.
아직 안 된 것회의비 서류 만들기(회의 전 사전 체크·기안 문안, 회의 뒤 사후 체크)는 따로 만들어 두었고 7주차에 이 창구 안으로 합칩니다. 다른 재원(국립대육성사업·산학협력단·교비) 기준도 7주차 예외표로. 규정봇 답을 창구 안에서 바로 보여 주기는 하지 않습니다 — 규정봇은 별도 노트북이라 출구 버튼까지. 파일 올리기·저장은 일부러 넣지 않았습니다(개인정보가 섞일 수 있어서).
바꾸지 않을 원칙적은 말은 서버로 보내지 않는다. 저장하지 않는다. 지침 숫자는 원문 그대로 한 곳에만, 출구 주소도 한 곳에만. 판정·승인과 최종 확인은 사람.

Before / After

구분BeforeAfter
어디에 물을지도구 셋 중에서 먼저 고름한 줄 적으면 답이나 출구가 나옴
회의비 한도·기준지침을 펼쳐 항목마다 찾음입구에서 근거 조항과 함께 바로
도구 주소메일·메신저에 흩어짐출구 버튼, 주소는 links.json 한 곳

다음 계획: ① 7주차 — 회의비 서류 화면을 이 창구 안으로 합치고, 재원별 예외표(국립대육성·산학협력단·교비) 붙이기 ② 써 본 분 피드백으로 예시 질문·지침표 다듬기 ③ 도구 주소가 바뀌면 links.json 한 줄만 고치기.

다시 한 번 — 화면 순서대로 — 처음이어도 그대로 따라 하면 됩니다

  1. 1. 만들기 → 클로드 앱 [Code] 탭, Environment = Local, Project folder = 바탕화면에 새로 만든 폴더, Permission mode = Manual → 위 상자의 문장을 붙여 넣고 Enter. 검사가 전부 통과했다고 하면 다음으로.
  2. 2. 새 프로젝트 → 크롬에서 학교 계정으로 script.google.com → 새 프로젝트 → 이름을 알아보기 쉽게 바꿈.
  3. 3. 붙여 넣기 → Code.gs 내용을 폴더의 것으로 전부 바꿈 → 왼쪽 + → HTML, 이름 index → 폴더의 index.html 전체 붙여 넣기(파일이 커서 몇 초 걸림) → 각각 Ctrl+S.
  4. 4. 배포 → 오른쪽 위 배포 → 새 배포 → 유형 웹 앱 → 실행 계정 나, 액세스 모든 사용자 → 배포 → (권한 확인 창이 뜨면 허용) → 웹 앱 URL 복사.
  5. 5. 세 곳에서 열기 → PC 크롬, 휴대폰, 카톡 대화방에 붙여 넣어 카톡 안에서. 예시 버튼 하나를 눌러 답이 뜨면 끝.
  6. 6. 고칠 때 → 편집기에서 파일 교체 → Ctrl+S → 배포 → 배포 관리 → 연필 → 새 버전 → 배포. 주소는 그대로입니다. 붙여 넣기 전에 지금 열린 파일 이름을 한 번 확인하세요.