우리 부서 업무 창구 웹앱을 Google Apps Script로 만들어 줘. 첫 화면은 검색창 하나와 예시 버튼 몇 개, 그 아래 출구 세 개(규정 · 공고 · 주간회의). 적은 말은 화면 안에 넣어 둔 공개 지침표에서 찾아 근거 조항과 함께 보여 주고, 못 찾으면 담당자에게 넘겨 줘. 출구마다 실제 도구로 가는 버튼을 달되, 주소는 links.json 한 파일에만 적게 해 줘. 규칙: 적은 내용은 서버로 보내지 말고 저장하지도 마. 주민등록번호·계좌번호 같은 형태가 보이면 멈추고 알려 줘. 서버 파일(Code.gs)은 화면을 내려 주는 doGet과 익명 사용 횟수 세기만 해. 테스트를 먼저 만들어서(node로 돌아가게) 전부 통과한 뒤에 알려 주고, 배포 방법(웹 앱, 실행 계정 = 나, 액세스 = 모든 사용자)을 처음 하는 사람 기준으로 README에 적어 줘.
그동안 규정 Q&A 봇, 연구공고봇, 주간회의 취합봇을 만들고 다듬었습니다(1~3주차 결과물). 도구가 늘어날수록 쓰는 사람은 질문하기 전에 "이건 어느 도구에 물을 일인가"를 먼저 골라야 합니다. 고르는 일이 한 번 더 생기면 도구를 쓰는 이유가 줄어듭니다. 그래서 도구를 하나 더 만드는 대신 입구를 하나로 모았습니다. 자주 묻는 한도·기준은 입구에서 바로 답하고, 더 깊은 것은 출구로 넘깁니다.
규정봇(노트북), 공고봇(메일·대시보드 시트), 취합봇(웹 화면). 각각은 잘 돌지만 문이 셋.
한 줄로 묻는 창구. 자주 묻는 것은 공개 지침표에서 바로 답하고, 나머지는 출구 버튼으로 각 도구에.
| 적은 말(예) | 보여 주는 것 | 출구 버튼 |
|---|---|---|
| 회의비 1인 한도가 얼마예요? | 답 카드: 1인 한도·결제 수단·제외되는 때·필요한 서류·안 되는 것 + 근거(사업비 집행 지침 §9 등) | 규정봇 열기 (학교 계정 · 파일 올리지 말라는 주의 함께) |
| 새로 뜬 공고 있나요 | 출구 2 — 매일 아침 열 시에 오는 공고 메일의 모습 | 공고봇 대시보드 (보기 전용 시트) |
| 주간회의 자료 내야 해요 | 출구 3 — 입력 한 번에서 회의자료 한 장으로 모아 보기까지(가명 시연 · 한글 파일로 합치기는 다음 단계) | 취합봇 (가명 데모) |
| 지침표에 없는 질문 | 지어내지 않고 담당자에게 넘김 | — |
| 주민등록번호·계좌번호 형태가 섞인 글 | 멈춤 — 세지도 보내지도 않고 빼고 다시 적어 달라고 안내 | — |
공개 페이지에 실리는 판이라 출구에는 공개돼도 안전한 주소만 달았습니다. 규정봇은 초대받은 학교 계정만 열리고, 취합봇은 가명으로 만든 데모로 연결합니다.
doGet으로 화면을 내려 줌doPost, 요청 값 읽기)·시트·메일 호출이 없음links.json 한 곳에만. https 주소만 버튼이 됨// 화면 코드를 그대로 꺼내 node에서 돌리는 검사(일부)
✓ fetch·XHR·sendBeacon·form action·WebSocket 이 없다 · 브라우저 저장소를 쓰지 않는다
✓ 서버 함수는 recordUse·getStats 둘뿐이고, 보내는 값은 ask·exit 뿐(적은 말은 안 보냄)
✓ 개인정보가 섞인 질문은 세지도 보내지도 않는다
✓ 회의비를 물으면 답이 나오고, 찾지 못하면 담당자로 넘긴다
✓ 주소가 비면 "설정되지 않았습니다"만 보이고 버튼은 없다 · https 주소만 버튼이 된다
✓ 규정봇 버튼 아래엔 파일을 올리지 말라는 주의가 붙는다
✓ 부서용(실명 명단) 취합봇 주소는 들어가지 않고, 취합봇 출구는 가명 데모로 간다
✓ Code.gs는 doGet만 있고 doPost가 없다 · 요청 값·시트·메일·URL 호출을 쓰지 않는다
✓ 특정 AI 제품 이름이 없다 · 휴대폰 화면 대비 · 파일 450KB 미만 · 검색 제외(noindex)
누가 나중에 "편하게" 전송이나 저장을 넣으면 위 검사가 바로 빨간색이 됩니다. 새 기능은 검사를 먼저 쓰고(빨강) 화면을 고쳐(초록) 올립니다. 화면 코드와 검사는 Claude Code가 작성했고, 코드는 직접 쓰지 않았습니다.
| 항목 | 내용 |
|---|---|
| 배포 주소 | https://script.google.com/macros/s/AKfycbzX3jH00kiiS46d3krmwfoBe7PT1jClHbHcydlXWcpvWUYZtfpcX1FmyUCrSatm744ZOQ/exec (Apps Script 웹 앱, 로그인 없이 열림) |
| 열어 본 곳 | PC 크롬 · 휴대폰 · 카톡 안 브라우저 — 로그인 없이 열리고, 질문하면 사용 횟수가 서버와 이어짐(9/30 · 휴대폰·카톡은 화면 폭과 브라우저 흉내로 확인) |
| 사용 횟수 | 3회 (익명, 질문·출구 열기를 센 횟수 · 9/30 만든 사람의 시험 포함) |
| 써 본 사람 한마디 | 아직 없음(9/30 배포) |



| 구분 | 내용 |
|---|---|
| 된 것 | 입구 하나(답 카드 + 출구 셋)를 Apps Script 웹 앱으로 배포. 원본 하나에서 시연판·배포판을 빌드하고 검사 31개·47개 통과. 휴대폰 크기(390px) 화면에서 가로로 넘치지 않음 확인. 적은 말은 화면 밖으로 나가지 않음. |
| 아직 안 된 것 | 회의비 서류 만들기(회의 전 사전 체크·기안 문안, 회의 뒤 사후 체크)는 따로 만들어 두었고 7주차에 이 창구 안으로 합칩니다. 다른 재원(국립대육성사업·산학협력단·교비) 기준도 7주차 예외표로. 규정봇 답을 창구 안에서 바로 보여 주기는 하지 않습니다 — 규정봇은 별도 노트북이라 출구 버튼까지. 파일 올리기·저장은 일부러 넣지 않았습니다(개인정보가 섞일 수 있어서). |
| 바꾸지 않을 원칙 | 적은 말은 서버로 보내지 않는다. 저장하지 않는다. 지침 숫자는 원문 그대로 한 곳에만, 출구 주소도 한 곳에만. 판정·승인과 최종 확인은 사람. |
| 구분 | Before | After |
|---|---|---|
| 어디에 물을지 | 도구 셋 중에서 먼저 고름 | 한 줄 적으면 답이나 출구가 나옴 |
| 회의비 한도·기준 | 지침을 펼쳐 항목마다 찾음 | 입구에서 근거 조항과 함께 바로 |
| 도구 주소 | 메일·메신저에 흩어짐 | 출구 버튼, 주소는 links.json 한 곳 |
다음 계획: ① 7주차 — 회의비 서류 화면을 이 창구 안으로 합치고, 재원별 예외표(국립대육성·산학협력단·교비) 붙이기 ② 써 본 분 피드백으로 예시 질문·지침표 다듬기 ③ 도구 주소가 바뀌면 links.json 한 줄만 고치기.
Code.gs 내용을 폴더의 것으로 전부 바꿈 → 왼쪽 + → HTML, 이름 index → 폴더의 index.html 전체 붙여 넣기(파일이 커서 몇 초 걸림) → 각각 Ctrl+S.