* 목차 *

2025년 9월 18일 목요일

2025 1030 부산시교육청 apps script 바이브코딩 심화버전 직무연수 참고자료

2025 0918 부산시교육청 apps script 바이브코딩 직무연수 참고자료

google aistudio  예시 데이터

이름,성별,친한 친구,긍정 관계 이유,싫어하는 친구,부정 관계 이유
김재현,남,박서준,성격이 잘 맞아서,이수민,말투가 거슬림
박서준,남,김재현,항상 나에게 먼저 다가와서,차은호,너무 시끄러움
이수민,여,최유진,같이 다니면서 친해졌어요,백현우,자꾸 내 물건을 건드림
김도윤,남,정우진,조용히 옆에서 잘 도와줘서,오나영,공부를 방해함
최유진,여,이수민,예전에 짝꿍이라서 친했음,박찬호,수업에 집중 안 함
정하늘,여,박서준,취향이 비슷해서,백현우,예의가 없음
강민준,남,서지우,운동을 같이 자주 함,김도윤,나랑 너무 달라서
서지우,남,강민준,유머 감각이 좋아서,정하늘,가끔 짜증냄
정우진,남,한예은,같이 급식 먹는 사이,강민준,너무 말이 많음
한예은,여,김도윤,내가 힘들 때 위로해 줌,오나영,나한테만 까칠함
오나영,여,민하은,둘 다 조용해서,이수민,너무 말이 많음
민하은,여,오나영,공통 관심사가 많음,정우진,나를 무시함
윤서아,여,차은호,같이 게임을 자주 함,아직 잘 모르겠어요.,
차은호,남,윤서아,리더십이 있어서,박서준,내 의견을 무시함
백현우,남,김재현,그냥 이유 없이 제일 친함,최유진,나한테 잔소리함
박찬호,남,아직 잘 모르겠어요.,,백현우,내가 싫어하는 행동만 함

------------------------

학생 설문 샘플 데이터 (교사에게 바라는 점 30개)

  1. 항상 친절하게 대해주셔서 감사해요.

  2. 수업 시간에 조금 더 천천히 설명해주시면 좋겠어요.

  3. 질문할 때 눈치 보이지 않게 해주시면 좋겠어요.

  4. 학생들 의견을 더 자주 들어주셨으면 합니다.

  5. 너무 무섭게 혼내지 않으셨으면 해요.

  6. 칭찬을 더 자주 해주시면 힘이 날 것 같아요.

  7. 숙제가 너무 많아서 조금 줄여주시면 좋겠어요.

  8. 시험 전에 요점 정리를 간단히 해주시면 감사하겠습니다.

  9. 수업 시간에 농담도 조금 섞어주시면 재밌을 것 같아요.

  10. 상담 시간을 조금 더 자주 가져주셨으면 합니다.

  11. 학생마다 다르게 접근해주셔서 좋았어요.

  12. 공부뿐만 아니라 고민도 들어주시면 좋겠어요.

  13. 피드백을 조금 더 구체적으로 주시면 감사하겠습니다.

  14. 발표를 잘 못하는 친구들도 배려해주시면 좋겠어요.

  15. 실수했을 때 기회를 한 번 더 주셨으면 좋겠어요.

  16. 수업 분위기를 조금 더 편하게 만들어주시면 좋겠어요.

  17. 교무실에서도 따뜻하게 인사해주셔서 좋아요.

  18. 학생들의 노력도 인정해주시면 좋겠습니다.

  19. 너무 빠르게 진도를 나가서 따라가기 힘들어요.

  20. 한 명 한 명의 이름을 불러주셔서 좋았어요.

  21. 조금 더 웃는 얼굴로 수업해주시면 분위기가 좋아질 것 같아요.

  22. 지적보다 칭찬을 먼저 해주시면 좋겠어요.

  23. 이해가 안 될 때 다시 물어봐도 괜찮은 분위기를 만들어주세요.

  24. 수업 자료를 미리 공유해주시면 복습하기 좋을 것 같아요.

  25. 학생들끼리 싸웠을 때 공정하게 판단해주셔서 좋아요.

  26. 휴식 시간에도 대화할 수 있는 분위기면 좋겠어요.

  27. 너무 진지할 때 가끔 유머를 섞어주시면 좋겠어요.

  28. 학급 행사에도 적극적으로 참여해주시면 감사하겠습니다.

  29. 저희의 이야기를 조금 더 들어주셨으면 좋겠어요.

  30. 선생님이 늘 응원해주셔서 학교생활이 즐겁습니다.

-----------------------------

과제1

🟢 Code.gs

function doGet() { return HtmlService.createHtmlOutputFromFile('index'); } // 답안 확인하고 시트에 기록 function checkAnswer(answer, name) { const correctAnswer = "apple"; // 정답 고정 const question = "사과는 영어로?"; // 정답 여부 판정 let result = (answer.toLowerCase().trim() === correctAnswer) ? "정답" : "오답"; // 현재 스프레드시트 가져오기 const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName("기록") || ss.insertSheet("기록"); // 기록 저장: 날짜, 이름, 문제, 제출 답, 결과 sheet.appendRow([new Date(), name, question, answer, result]); return result; }

🟢 index.html

<!DOCTYPE html> <html> <head> <base target="_top"> </head> <body> <h2>단어 퀴즈</h2> <p>문제: 사과는 영어로?</p> <label>이름: <input type="text" id="name"></label><br><br> <label>정답: <input type="text" id="answer"></label><br><br> <button onclick="submitAnswer()">제출</button> <p id="result"></p> <script> function submitAnswer() { const name = document.getElementById("name").value; const answer = document.getElementById("answer").value; google.script.run.withSuccessHandler(function(res) { document.getElementById("result").innerText = "결과: " + res; }).checkAnswer(answer, name); } </script> </body> </html>

https://sheets.new


<실습2>

🟢 Code.gs

function doGet() { return HtmlService.createHtmlOutputFromFile('index'); } // 문제 불러오기 function getQuestions() { const ss = SpreadsheetApp.getActiveSpreadsheet(); const sheet = ss.getSheetByName("문제"); const data = sheet.getDataRange().getValues(); // 전체 불러오기 const headers = data.shift(); // 첫 행(헤더) 제거 return data.map(row => ({ number: row[0], question: row[1], answer: row[2] })); } // 답안 채점 function submitAnswers(answers, name) { const ss = SpreadsheetApp.getActiveSpreadsheet(); const qSheet = ss.getSheetByName("문제"); const data = qSheet.getDataRange().getValues(); data.shift(); // 헤더 제거 let score = 0; let correctCount = 0; data.forEach((row, idx) => { const correct = String(row[2]).toLowerCase().trim(); const studentAnswer = String(answers[idx] || "").toLowerCase().trim(); if (studentAnswer === correct) { score += 1; correctCount += 1; } }); // 성적 시트에 기록 const sSheet = ss.getSheetByName("성적") || ss.insertSheet("성적"); sSheet.appendRow([new Date(), name, score, data.length, correctCount]); return { score: score, total: data.length, correct: correctCount }; }

🟢 index.html 

<!DOCTYPE html> <html> <head><base target="_top"></head> <body> <h2>단어 퀴즈</h2> <label>이름: <input type="text" id="name"></label> <div id="quiz"></div> <button onclick="submit()">제출</button> <p id="result"></p> <script> let questions = []; // 문제 불러오기 google.script.run.withSuccessHandler(function(res) { questions = res; const quizDiv = document.getElementById("quiz"); res.forEach((q, i) => { quizDiv.innerHTML += ` <p>${q.number}. ${q.question}</p> <input type="text" id="q${i}"> `; }); }).getQuestions(); // 제출 function submit() { const name = document.getElementById("name").value; const answers = questions.map((q, i) => document.getElementById("q"+i).value); google.script.run .withSuccessHandler(function(res) { document.getElementById("result").innerText = `점수: ${res.score}/${res.total} (맞힌 문제: ${res.correct})`; }) .withFailureHandler(function(err) { document.getElementById("result").innerText = "⚠ 오류: " + err.message; }) .submitAnswers(answers, name); } </script> </body> </html>


번호
문제 정답
1 한글을 창제하여 우리 글자를 만들고, 집현전을 설치해 학문을 발전시킨 왕은 누구일까요? 세종대왕
2 임진왜란 때 거북선을 만들고 명량대첩에서 큰 승리를 거둔 장군은 누구일까요? 이순신
3 고려 시대 무신 집권기에 몽골과 싸우며 삼별초를 이끌었던 장군은 누구일까요? 김윤후
4 신라 시대에 삼국을 통일하고 화랑도를 발전시킨 왕은 누구일까요? 김춘추(태종 무열왕)
5 조선 중기의 여류 시인으로, 뛰어난 문장과 글씨로 유명했던 인물은 누구일까요? 신사임당
6 고려를 건국하고 송악에 도읍을 정한 왕은 누구일까요? 왕건
7 조선 후기 실학자로 『목민심서』를 저술한 사람은 누구일까요? 정약용
8 발해를 건국한 사람은 누구일까요? 대조영
9 신라 최초의 여왕으로 나라를 안정적으로 다스린 인물은 누구일까요? 선덕여왕
10 조선 전기의 충신으로, 단종을 지키려다 사육신으로 불린 인물 중 한 명은 누구일까요? 성삼문