북부 주제4 강의 가이드(잘생김프로쌤)

도입부 분위기 전환용(칼퇴근)

우리의 교육은?

Road Map to be the Teacher Developer

flowchart TD
    A[Google SpreadSheet Basic Level]
    B[Google SpreadSheet Advanced]
    C[Google AppsScript]
    D[Google AppSheet]
    E[FlutterFlow]
    F[Flutter]
    A --> B
    B --> C
    C --> D
    D --> E
    E --> F
Mermaid
복사
Teacherize도 모두 Apps Script로 만들었답니다.
Apps Script 잘 배워서 나도 나만의 프로그램을 만들면 좋겠습니다.

템플릿을 활용한 표준 가이드(2024.09.01. updated)

북부주제4템플릿설명서(김준오).pptx
1919.4KB
구글 설문결과 반별 자동분류_오선영.pptx
1559.0KB
제가 만든 예시가 1번, 오선영 선생님께서 만든 예시가 2번 난이도 순서로 강사의 역량에 맞게 강의를 진행하면 될 것 같습니다. 오선영 선생님께서 만들어 주신 훌륭한 자료가 제 예시 보다는 어렵습니다.

1. 수행평가 과제 제출 현황표 만들기(구글 스프레드시트 함수 심화) with AI

'=IF(ISBLANK($A2), "결번 또는 위탁", IF(COUNTIF(INDIRECT(C$1&"!"&"B:B"), $A2)>=1, "O", "X"))
VB.Net
복사
함수의 이해
함수를 생성형 인공지능의 도움으로 만들기
만든 함수 검증하기
함수 사용하기

2. 간단한 계산기 만들기(구글 앱스 스크립트 기본) with AI

구글 앱스 스크립트의 이해
생성형 인공지능의 도움으로 커스텀 함수 만들기
커스텀 함수를 구글 스프레드 시트와 연결하기
커스텀 함수 사용하기 실습
plus.gs
/** * A1 셀과 C1 셀의 값을 더하는 사용자 정의 함수 * * @customfunction */ function plus() { const sheet = SpreadsheetApp.getActiveSpreadsheet().getActiveSheet(); const a1Value = sheet.getRange("A1").getValue(); const c1Value = sheet.getRange("C1").getValue(); // 숫자 값인지 확인하고, 숫자가 아니면 0으로 처리 const numA1 = typeof a1Value === 'number' ? a1Value : 0; const numC1 = typeof c1Value === 'number' ? c1Value : 0; const sum = numA1 + numC1; sheet.getRange("E1").setValue(sum); }
JavaScript
복사

3. 구글 폼 반별 자동 분류(구글 앱스 스크립트 심화) with AI

구글 폼 제작 방법의 이해
함수를 트리거로 설정(자동화)
구글 폼을 제출할 때마다 반별로 자동 분류
학번 순으로 정렬
onFormSubmit.gs
function onFormSubmit(e) { // 설문지 응답이 제출된 시트 가져오기 var responseSheet = e.source.getActiveSheet(); var lastRow = responseSheet.getLastRow(); var responseData = responseSheet.getRange(lastRow, 1, 1, responseSheet.getLastColumn()).getValues()[0]; // 학번 가져오기 (설정 가능하도록 변경) var studentIdColumnIndex = 4; // 학번이 위치한 열 번호 (0부터 시작) var studentId = responseData[studentIdColumnIndex].toString(); // 학년과 반을 학번에서 분리 var grade = studentId.substring(0, 1); var classNumber = studentId.substring(1, 3); // 시트 이름 생성 (설정 가능하도록 변경) var sheetNameFormat = "{grade}학년 {classNumber}반"; var sheetName = sheetNameFormat.replace("{grade}", grade).replace("{classNumber}", classNumber); // 해당 시트가 존재하는지 확인 var spreadsheet = SpreadsheetApp.getActiveSpreadsheet(); var classSheet = spreadsheet.getSheetByName(sheetName); // 시트가 없다면 새로 생성 if (!classSheet) { classSheet = spreadsheet.insertSheet(sheetName); // 응답 시트의 헤더를 복사 var header = responseSheet.getRange(1, 1, 1, responseSheet.getLastColumn()).getValues()[0]; classSheet.appendRow(header); } // 응답 데이터를 해당 시트에 추가 classSheet.appendRow(responseData); // 학번을 기준으로 시트 정렬 (학번 열 번호 설정 가능하도록 변경) var studentIdSortColumn = 5; // 정렬 기준이 될 학번 열 번호 (1부터 시작) var lastRowClassSheet = classSheet.getLastRow(); if (lastRowClassSheet > 1) { classSheet.getRange(2, 1, lastRowClassSheet - 1, classSheet.getLastColumn()).sort({column: studentIdSortColumn, ascending: true}); } }
JavaScript
복사
아래 강의는 강사의 역량에 따라 포함할 수 있습니다. 하지만 현재 강의 시스템에서는 주제 5에서 다루는 것이 로드맵 가이드에 더 적합할 것 같습니다. 또는 추후 구글 앱스 스크립트 고급 과정에 어울릴 수 있겠네요.

* 간단한 채팅 기능 만들기(구글 앱스 스크립트 심화 1) with Gemini

* 생기부 초안 작성(구글 앱스스트립트 심화 2) with Gemini

상황 대처

어떤 변수가 생길 수 있을까요?

참고 영상

[업무 자동화] 구글 앱스 스크립트 첫 번째 시간” 의 영상 요약 노트

흥미로운 내용 3가지 :
구글 앱스 스크립트는 반복 작업을 자동화하여 업무 효율성을 높이는 도구이며, 간단한 코드를 통해 다양한 자동화 작업을 수행할 수 있다.
SMS 발송이나 데이터 입력 작업 등 구글 스프레드시트와 연계하여 여러 작업을 자동으로 처리할 수 있는 가능성을 제공한다.
독립형 및 컨테이너 바인딩 스크립트를 통해 데이터와 앱을 연결하여 보다 효과적인 솔루션을 구현할 수 있다.