구글시트, 업무 자동화 특별 스터디 (2강) | 정말 쉬운, 나만의 커스텀 메뉴 만들기⚡
라이브 113 회
2022년10월22일
위캔두 Plus
강의 소개
1. 구글 Apps Script 주요 연산자 살펴보기
오늘 강의에서는 구글 Apps Script 코딩에서 중요한 연산자를 핵심만 골라 빠르게 살펴봅니다.
이후 각 주요 연산자의 사용법을 실전 예제와 함께 단계별로 실습합니다.
2. Apps Script 논리문 (IF) 실전 예제
이후 Apps Script의 논리문(IF)의 기본 문법과 사용법을 간단한 예제와 함께 알아봅니다.
이후 IF 함수를 사용해 각 구간별 BMI를 계산하는 사용자 함수를 직접 만들며 실습합니다.
3. 팝업창 활용 및 커스텀 메뉴 만들기
마지막으로 팝업창을 출력해 사용자에게 값을 입력받아 코드를 실행하는 방법을 알아봅니다.
마지막으로 구글 시트에 나만의 커스텀 메뉴를 등록하고 사용하는 방법을 알아봅니다.
라이브 미션
- 사전미션 ① : BMI를 계산하는 커스텀 함수
/* 사전미션 ① * BMI를 계산하는 커스텀 함수를 작성해보세요! */ /** * BMI(체질량지수)를 계산합니다. * * @param height 키를 "cm" 단위로 입력합니다. * @param weight 몸무게를 "kg" 단위로 입력합니다. * @customfunction */ function BMI(height, weight) { //var result = weight / (height/100)**2 } - 사전미션 ② : 현재 시간을 알림창으로 출력하는 코드
/* 사전미션 ② * 현재 시간을 알림창으로 출력하는 코드를 작성해보세요! */ function printTime() { // 현재 시간을 [yyyy년 MM월 dd일] HH시 mm분 형태로 받아옵니다. var newTime = new Date; var timeZone = Session.getTimeZone(); var displayTime = Utilities.formatDate(newTime, timeZone, "[y년 M월 d일] H시 m분") //var ui = ... 로 안내창을 출력하는 코드를 작성해보세요! }
보충 자료
✅ 구글시트 Apps Script 자동화 스터디 2일차 완성 코드
📋Session.getTimeZone 함수는 아직 사용가능하나 향후 미지원 될 예정으로, 함수 작성시 위에 취소선이 표시될 수 있습니다.
그럴 경우, "getTimeZone" 대신 "getSciprtTimeZone" 함수를 사용하면 취소선 없이 코드를 작성할 수 있습니다.

그럴 경우, "getTimeZone" 대신 "getSciprtTimeZone" 함수를 사용하면 취소선 없이 코드를 작성할 수 있습니다.

/**
* 사전미션 - 첫번쨰 미션 (BMI 계산하기)
* */
/**
* BMI(체질량지수)를 계산합니다.
*
* @param height 키를 "cm" 단위로 입력합니다.
* @param weight 몸무게를 "kg" 단위로 입력합니다.
* @customfunction
*/
function BMI(height, weight) {
if (!height || !weight) {
throw "키(cm) 또는 몸무게(kg)가 누락되었습니다.";
}
var result = weight / (height/100)**2;
var condition;
if (result > 25) {
condition = "비만";
} else if (result > 23) {
condition = "과체중";
} else if (result > 18.5) {
condition = "정상";
} else {
condition = "저체중";
}
return result.toFixed(2)+" ("+condition+")";
//var result = weight / (height/100)**2
}
/**
* 사전미션 - 두번쨰 미션 (현재 시간 출력하기)
* */
function printTime() {
// 현재 시간을 [yyyy년 MM월 dd일] HH시 mm분 형태로 받아옵니다.
var newTime = new Date;
var timeZone = Session.getTimeZone();
var displayTime = Utilities.formatDate(newTime, timeZone, "[y년 M월 d일] H시 m분")
//var ui = ... 로 안내창을 출력하는 코드를 작성해보세요!
var ui = SpreadsheetApp.getUi();
ui.alert(displayTime);
}
/**
* 연산자 살펴보기
* */
function test() {
var a = 1;
a = a + 1;
a += 1;
}
/**
* 입력창으로 키/몸무게 받아온 후, BMI 출력/계산하기
* */
function printBMI() {
var app = SpreadsheetApp;
var ui = SpreadsheetApp.getUi();
var height = ui.prompt("키를 cm단위로 입력하세요.").getResponseText();
var weight = ui.prompt("몸무게를 kg단위로 입력하세요.").getResponseText();
var result = weight / (height/100)**2;
var ss = app.getActiveSpreadsheet();
var activeSheet = ss.getActiveSheet();
var activeCell = activeSheet.getActiveCell();
activeCell.setValue(result.toFixed(2));
ui.alert("당신의 BMI는 "+result.toFixed(2)+" 입니다.");
}
/**
* 나만의 커스텀 메뉴 등록하기
* */
function initCustomMenu() {
var ui = SpreadsheetApp.getUi();
var menu = ui.createMenu("커스텀메뉴");
var submenu = ui.createMenu("기능모음");
menu.addItem("BMI입력","printBMI");
menu.addSeparator();
menu.addItem("현재시간출력","printTime")
menu.addSeparator();
submenu.addItem("BMI입력","printBMI");
submenu.addItem("현재시간출력","printTime");
menu.addSubMenu(submenu);
menu.addToUi();
}
/**
* 구글 시트 실행 트리거 이벤트 코드
**/
function onOpen() {
initCustomMenu();
}
var timeZone = Session.getTimeZone(); 에서
getTimeZone 이 취소선으로 나타납니다.
왜 그런걸까요?
getTimeZone 함수가 폐기되어서(사용 불가하게 될 예정) 그렇습니다.
아직 geTimeZone 함수는 사용 가능하나, getTimeZone 대신 getScriptTimeZone 함수를 사용해보세요 :)
감사합니다.