TechKwon's site
강의
2026년 1월
2026년 2월 강의 자료 모음
2026년 3월 강의 자료 모음
2026년 4월 강의 자료 모음
2026년 5월 강의 자료 모음
2026년 6월 강의자료 모음
(20260610) 코덱스 click로 크롬확장 만들기
(20260611) 안성 디지털 전문교원 리더과정 연수 강사
(20260612) 디지털 아카데미 심화
(20260616) 교실이 바뀌는 나노바나나2
(20260617) 발명반 - 캔바로 영상만들기
(20260619) 클로드코드
(20260620) AI미래교육박람회
(20260623) 제바바 3.0 제미나이 최신 활용과 바이브 코딩 교실 적용
(20260624) 강동송파 제미나이 아카데미
(20260630) 지식샘터-코딩 0초! 나노바나나 게임 만들기
(20260618) 질문과 사고구술이 함께하는 AI 디지털 수업 디자인
(20260716) 포천 특수교육 에듀테크 연수
자료
Nanobanana pro
학운위 에듀테크 심의자료 학교용(3월 16) 업데이트중
딸깍 게임 리스트
학교 현장을 위한 AI 교육 안전 & 개발 가이드북
Google NotebookLM Data Tables 활용 가이드
구글이 추천하는 2026년 시작하기
📘 Claude Code: The Ultimate Usage Guide
완벽한 다이어그램을 만들기 위한 3단계
🚀 AI로 초고퀄 PPT 만드는 '진짜' 비결
Opencode를 설치해 봅시다.
NpxMagicDoc 작가를 위한 완벽 마법서
2026 미래를 바꿀 4가지 AI 키워드
SEO 설정을 했는데 카카오톡에 반영이 안될때?
구글 검색 설정 https://search.google.com/
네이버 검색 설정 https://searchadvisor.naver.com/
Google Stitch와 Google AI Studio를 활용한 노코드 앱 개발 가이드
2026년 천기할매
WinApp CLI 완전 정복 문서
🦞 Clawdbot 핵심 가이드
구글 AI PRO / AI ULTRA 요금제 개발자 혜택
Notebooklm+Veo로 영상 만들기
구글 랩스 인증하기
구글 사이트 링크
App Script 사용 설정
프로젝트
내 바탕화면에 귀여운 집중 파트너, Codex Pet 🪄
Class-SNA 2.0
Aiedu.love
원장님 이거요!
AI생기부생성기
제미나이 퀴즈
Nanobanana2 활용 가이드
새소식
온라인 강의
서적
요즘 교사를 위한 에듀테크 수업 활용 가이드
학교에서 바로 쓰는 제미나이 & 노트북LM
로그인
2026년 1월
📖

(20260120) 지식샘터-코딩 0초! 나노바나나 게임 만들기

T
TechKwon
2026년 1월 12일5달 전
카테고리
비어 있음
날짜
비어 있음
참여자
T
최근활동
1월 20일
지식샘터
•
신청 링크
지식샘터
지식샘터 홈페이지
educator.edunet.net
강의자료
💬
제미나이
•
제미나이 접속하기
‎Google Gemini
Meet Gemini, Google’s AI assistant. Get help with writing, planning, brainstorming, and more. Experience the power of generative AI.
gemini.google.com
수업 자료 생성하기 실습
내가 가르치는 [학년/과목]에서 [단원명] 수업 도입 활동으로 사용할 수 있는 아이디어 3가지를 제안해줘. 각 활동은 5분 이내로 진행 가능해야 하고, 학생들의 흥미를 끌 수 있어야 해."
💬
나노바나나
수업 자료 이미지 생성
"[학년/과목] 수업에서 [주제]를 설명하기 위한 교육 자료 이미지를 만들어줘. [원하는 스타일]로, [색상/분위기]하게 그려줘."
💬
성공한 백엔드 코드
/**
 * [OX 퀴즈 백엔드 API]
 * 작성자: Tech Kwon's Partner
 * 기능: 문제 데이터 제공(GET) 및 결과 저장(POST)
 */

// ==========================================
// 1. 설정 영역 (Configuration)
// ==========================================
const SHEET_QUIZ = "문제은행";   // 문제 시트 이름
const SHEET_RESULT = "활동결과"; // 결과 저장 시트 이름

// ==========================================
// 2. GET 요청 처리: 문제 데이터 가져오기
// ==========================================
function doGet(e) {
  // 요청 파라미터 확인 (예: ?code=1234)
  const params = e.parameter;
  const searchCode = params.code;

  // 코드가 없으면 에러 반환
  if (!searchCode) {
    return responseJSON({ result: "error", message: "참여 코드가 없습니다." });
  }

  try {
    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = ss.getSheetByName(SHEET_QUIZ);
    
    // 데이터 범위 가져오기 (헤더 제외하고 데이터만 처리)
    const lastRow = sheet.getLastRow();
    if (lastRow < 2) {
       return responseJSON({ result: "error", message: "등록된 문제가 없습니다." });
    }
    
    // A열(코드)부터 D열(정답)까지 데이터 가져오기
    // getValues()는 2차원 배열을 반환합니다. [[Code, "", Question, Answer], ...]
    const data = sheet.getRange(2, 1, lastRow - 1, 4).getValues();

    // 코드(A열, 인덱스 0)가 일치하는 행만 필터링
    // map을 사용하여 필요한 데이터(문제, 정답)만 추출
    // 구조: A(0), B(1), C(2:문제), D(3:정답)
    const quizList = data
      .filter(row => String(row[0]) === String(searchCode)) // 코드 일치 여부 확인 (문자열 비교)
      .map(row => ({
        q: row[2], // C열: 문제
        a: row[3]  // D열: 정답 (O/X)
      }));

    // [보안] 일치하는 코드가 하나도 없으면 에러 반환
    if (quizList.length === 0) {
      return responseJSON({ result: "error", message: "유효하지 않은 참여코드입니다." });
    }

    // 성공 시 JSON 배열 반환
    return responseJSON(quizList);

  } catch (err) {
    // 서버 내부 오류 처리
    return responseJSON({ result: "error", message: err.toString() });
  }
}

// ==========================================
// 3. POST 요청 처리: 점수 저장하기
// ==========================================
function doPost(e) {
  try {
    // 전달받은 JSON 데이터 파싱
    // 내용: { "code": "...", "name": "...", "score": 100 }
    const postData = JSON.parse(e.postData.contents);
    
    const code = postData.code;
    const name = postData.name;
    const score = postData.score;

    const ss = SpreadsheetApp.getActiveSpreadsheet();
    const sheet = ss.getSheetByName(SHEET_RESULT);

    // 현재 시간 (KST 포맷)
    const timestamp = Utilities.formatDate(new Date(), "GMT+9", "yyyy-MM-dd HH:mm:ss");

    // 시트에 행 추가 [날짜, 코드, 이름, 점수]
    sheet.appendRow([timestamp, code, name, score]);

    // 성공 응답 반환
    return responseJSON({ result: "success" });

  } catch (err) {
    return responseJSON({ result: "error", message: err.toString() });
  }
}

// ==========================================
// 4. 유틸리티: JSON 응답 생성 헬퍼 함수
// ==========================================
function responseJSON(data) {
  return ContentService.createTextOutput(JSON.stringify(data))
    .setMimeType(ContentService.MimeType.JSON);
}

/**
 * [배포 가이드]
 * 1. 우측 상단 '배포(Deploy)' > '새 배포(New deployment)' 클릭
 * 2. 유형 선택: '웹 앱(Web app)'
 * 3. 설명: 'OX 퀴즈 API v1' 등 입력
 * 4. 다음 사용자 권한으로 실행(Execute as): '나(Me)' (교사 계정 권한으로 시트에 접근)
 * 5. 액세스 권한(Who has access): ★'누구나(Anyone)'★ 선택 (학생들이 로그인 없이 접근 가능하게 함)
 * 6. '배포(Deploy)' 클릭 후 생성된 '웹 앱 URL'을 복사해서 사용하세요.
 */

💬
바이브코딩
딸깍 게임 리스트
Google Docs딸깍 게임리스크
'TechKwon's site' 구독하기
사이트를 구독하면 새 포스트 등 최신 업데이트를 알림과 메일로 가장 먼저 받아보실 수 있습니다.
Slashpage에 가입하고 'TechKwon's site'을 구독하세요!
구독