구글 앱 스크립트를 이용하면 많은 일들을 쉽게 할 수 있지만 특히, 단순 반복적인 업무를 쉽게 할 수 있습니다. 아래는 가장 간단한 형태의 스크립트 작성 예 입니다.
간단한 사칙연산 매크로
버튼을 클릭하면, 범위(C1:C2)의 숫자가 증감 되는 매크로입니다.
[ 매크로 작성하기 ]
var sheet=SpreadsheetApp.getActive().getActiveSheet();
var getRng=sheet.getRange('C1:C2');
function plusOne(){
getRng.setValue(getRng.getValue() + 1);
}
function minusOne(){
getRng.setValue(getRng.getValue() - 1);
}
1. 메뉴에서 도구 > 스크립트 편집기로 들어가 Code.gs 파일에 아래 스크립트를 복사 / 붙여 넣기 해줍니다.
2. 프로젝트 저장을 클릭 하여 매크로를 저장 해줍니다
[ 설명 ]
1. 'sheet' 변수에 스프레드시트 앱에 현재 액티브 된 시트를 넣어줍니다.
var sheet=SpreadsheetApp.getActive().getActiveSheet();
2. 'A1' 셀에 값을 변수에 넣어줍니다.
var getRng=sheet.getRange('C1:C2');
3. 'plusOne()' 이라는 범위의 값에 1을 더 해주는 함수를 만들어 줍니다.
function plusOne(){ getRng.setValue(getRng.getValue() + 1); }
4. 'minusOne()'이라는 범위의 값에 1을 빼주는 함수를 만들어 줍니다.
function minusOne(){ getRng.setValue(getRng.getValue() - 1); }
5. 아래와 같이 버튼을 만들어서 '스크립트 할당'을 마치면 완성~! +, - 를 클릭하면 범위에 있는 숫자가 증감 됨을 확인 할 수 있습니다.
모바일에서는 그림에 스크립트 할당이 아직 지원 되지 않으므로 세모 그림을 탭해도 함수가 실행되지 않아서, '체크박스'를 이용하여 구현하였습니다.(체크박스 탭 = 그림 클릭!)
function onEdit(e){
const rg = e.range;
if(rg.getA1Notation() === "B2" && rg.isChecked() && rg.getSheet().getName() === "Sheet1"){
plusOne();
rg.uncheck();
}
if(rg.getA1Notation() === "D2" && rg.isChecked() && rg.getSheet().getName() === "Sheet1"){
minusOne();
rg.uncheck();
}
}
선택한 셀에 대해서 사칙연산( + - * / )이 가능한 함수입니다. 특정셀이 아니라 선택한 각각의 셀에 대해서 입력 한 값에 대한 사칙연산을 처리해줍니다.
function onEdit(e){
const rg = e.range;
if(rg.getA1Notation() === "F1" && rg.isChecked() && rg.getSheet().getName() === "Sheet1"){
plusOne();
rg.uncheck();
}
if(rg.getA1Notation() === "G1" && rg.isChecked() && rg.getSheet().getName() === "Sheet1"){
minusOne();
rg.uncheck();
}
}
해결 방법은 선택한 셀 범위(레인지)의 값을 구한 다음 연산을 거친 후 다시 값을 범위에 지정해줍니다.
사용방법은 아래 함수에서 빨간색 연산 부분을 계산하고 싶은 값으로 바꿔주면 됩니다.
if( currentValue == "제외"|| currentValue == "#N/A") 부분에서는 셀에 '제외', '#N/A' 값인 경우 연산하지 않게 설정합니다. 특정한 값일 경우 연산을 배제 할 경우 넣어줍니다.
[ 사칙연산 입력 예, +50, -5, *15, *100] var currentValueMan = currentValue*1 +1; ]
function man4Selection()
{
var range = SpreadsheetApp.getActive().getSelection().getActiveRange();
var numRows = range.getNumRows();
var numCols = range.getNumColumns();
var valuesToSet = [];
for (var i = 1; i <= numRows; i++) {
for (var j = 1; j <= numCols; j++) {
var currentValue = range.getCell(i,j).getValue();
// 아래 +1 부분에 사칙연산 입력 예, +50, -5, *15, *100
var currentValueMan = currentValue*1 +1;
Logger.log(currentValueMan);
if( currentValue == "제외"|| currentValue == "#N/A")
{
// 제외, #N/A 값이 포함되어 있으면 실행하지 않음
}
else
{
// 범위를 값으로 변경 후 값을 배열로 바꿈
//range.getCell(i,j).setValue(currentValue);
valuesToSet.push([range.getCell(i,j),currentValueMan])
}
}
}
// 배열에 넣은 값 입력
for(var rng in valuesToSet)
{
valuesToSet[rng][0].setValue(valuesToSet[rng][1]);
}
}
선택 셀 연산 함수 man4Selection()
'구글 오피스 > 앱 스크립트' 카테고리의 다른 글
구글 스크립트로 여러명에게 한꺼번에 이메일 보내는 방법(동시 발송) (0) | 2021.05.23 |
---|---|
구글 스프레드시트 특정 구간 변경 시 자동 시간 기록 함수[ onEdit() 함수 활용] (0) | 2021.05.23 |
구글 시트 사용자 메뉴, 서브 메뉴 만들기 매크로, onOpen 함수 (0) | 2021.05.23 |
구글 시트, 매크로 입력 값 자동 감지 onEdit 함수 (0) | 2021.05.23 |
구글 앱 스크립트 개요(매크로) 및 교육, 학습 사이트 소개 (0) | 2021.05.22 |