구글 스프레드시트는 Apps Script라는 코드를 짤 수 있는 기능이 있습니다.
이 확장 기능을 활용하여 스프레드시트에 데이터를 입력하고 출력할 수 있는 기능을 구현할 수 있는데요.
가계부, 명부, 일기장 등 데이터를 입출력하는 목적이라면 종류를 가리지 않고 사용할 수 있습니다.
오늘은 데이터 입력에 대한 기초적인 내용을 알아보려고 합니다.
구글 스프레드시트 Apps Script 데이터 입력 코드 작성
스프레드시트 시트는 총 2개로 구성합니다.
데이터를 입력하기 위한 '입력'시트와 내용을 저장하기 위한 'data'시트입니다.
'입력'시트 구성
아래 사진과 같이 C5셀에 날짜를 넣고 C8셀에는 내용을 넣도록 구성하였습니다.
삽입 - 그림으로 이동하여 버튼으로 사용할 입력버튼도 하나 만들어서 넣어줬고요.
위 입력 버튼을 클릭하면 데이터가 'data시트'에 입력이 되는 구조입니다.
그럼 이번에는 data시트를 한번 살펴볼까요?
입력 버튼을 누르면 C5칸의 날짜와 C8칸의 내용이 입력이 됩니다.
그럼 이번에는 확장 프로그램 - Apps Script 순으로 이동하여 스크립트 편집기를 열어주도록 하겠습니다.
기본적인 구성에 대해서는 지난번 포스트를 확인해 주세요.
구글 스프레드시트 Apps Script, 데이터 입력을 위한 스크립트
자, 그럼 이번에는 코드를 어떻게 작성했는지 살펴보도록 하겠습니다.
// Save New Data Function
function submitRegistrar() {
var SPREADSHEET_NAME = "data";
var SEARCH_COL_IDX = 0;
var RETURN_COL_IDX = 0;
var ss = SpreadsheetApp.getActiveSpreadsheet();
var formSS = ss.getSheetByName("입력"); //데이터 입력 시트
var datasheet = ss.getSheetByName("data"); //데이터가 저장되는 시트
var str = formSS.getRange("C5").getValue();
var values = ss.getSheetByName(SPREADSHEET_NAME).getDataRange().getValues();
for (var i = 0; i < values.length; i++) {
var row = values[i];
if (row[SEARCH_COL_IDX] != str) {
var values1 = [[formSS.getRange("C5").getValue(),
formSS.getRange("C8").getValue()]];
// Save New Data
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 2).setValues(values1);
SpreadsheetApp.getUi().alert(' "New Data Saved"');
return row[RETURN_COL_IDX];
}
}
}
저는 개발자가 아니기 때문에 원리에 대해서 아주 디테일하게 설명하지 못합니다.
설명을 하더라도 틀린 부분이 있을 수 있으니 감안하고 확인해 주세요.
기본적으로 구글 스프레드시트 Apps Script에서 사용되는 코드는 자바 스크립트로 알고 있습니다.
기본적인 문법은 다음과 같아요.
function 이름() {
내용
}
function으로 시작을 하고 코드 이름을 작성해 줍니다.
그리고 '{'로 시작하였다면 항상 '}'로 닫아줘야 합니다.
'('역시 마찬가지로 ')'로 닫아줘야 하는 거죠.
스크립트가 명령을 알아먹을 수 있도록 하나씩 지정해줘야 합니다.
마치 처음 보는 사람에게 내 친구를 소개하는 것과 같이 말이죠.
var는 변수를 선언해 주는 것인데 그냥 간단하게 명령이라고 보면 됩니다. "야, 너 이것 좀 해라!" 또는 "야, 이게 이거야!"뭐 이런 식이죠.
그래서 var SPREADSHEET_NAME = "data"; 이걸 해석하자면 아래와 같습니다.
var("야, 이게 이거야!") SPREADSHEET_NAME(을) = "data"(라고 할 거야);
끝에 세미콜론 ; 은 꼭 붙여줘야 합니다.
약간 이런 의미인 것 같아요. ;(알아 들었지?)
그리고 중간에 함수를 넣는 거죠, "이럴 때 이렇게 등록하는 거야"와 같은 겁니다.
마찬가지로 var ss = SpreadsheetApp.getActiveSpreadsheet(); 와 관련해서는 아래와 같습니다.
var(야) ss(얘는 다음과 같아) = SpreadsheetApp.getActiveSpreadsheet() (활성화되어 있는 스프레드시트를 ss라고 할 거야) ; (알겠냐?)
SEARCH_COL_IDX 는 입력 기능과 관련된 것이고 RETURN_COL_IDX는 입력기능이 끝나는 것과 관련된 거예요.
입력을 눌러서 데이터를 입력하고 입력이 끝났다는 것을 스프레드시트에게 알려줘야 하잖아요?
그래야 입력을 끝낼 수 있으니까요.
그다음은 이 과정을 반복하는 거예요.
formSS는 입력시트이고 datasheet는 data시트라는 걸 일일이 다 정해줘야 하고 데이터는 C5와 C8에 있으니까 그 데이터를 가져와서 입력을 시켜야 해! 이런 식으로 알려주는 것이죠.그리고 데이터를 입력한 후 데이터가 입력이 되었다는 것을 사용자인 우리가 알아야 하잖아요?
datasheet.getRange(datasheet.getLastRow()+1, 1, 1, 2).setValues(values1);
SpreadsheetApp.getUi().alert(' "New Data Saved"');
이건 데이터가 입력이 잘 되었다면 "New Data Saved"란 글자를 나타내라, 그러면 입력이 잘 된 줄 알겠다는 뜻입니다.
이러면 데이터 입력 한 텀이 끝이 납니다.
이제는 이것의 반복이 되겠죠?
입력을 하면 아래 방향으로 등록이 될 거예요.
잘 되는지 알아보기 위해 제가 한 2개 정도 입력을 했습니다.
입력을 하기 위해서는 입력 버튼에 스크립트 이름을 할당해 줘야 해요.
아래 그림과 같이 입력 버튼에 마우스 오른쪽 버튼을 클릭하면 대화상자가 나오는데요, 스크립트 할당을 클릭해 줍니다.
그럼 나타나는 대화상자에서 입력한 스크립트의 function 이름을 복사해 붙여 넣기 해줍니다.
제가 붙인 이름은 submitRegistrar 이거였죠? 복사해서 붙여넣기 한 후 확인을 눌러줍니다.
그런 다음 입력 버튼을 클릭하면 권한을 요청하는 대화상자가 나타나는데요, 고급을 눌러주어 승인을 해줘야 버튼을 사용할 수 있어요.
계속을 눌러주어 다음 단계로 진행합니다.
계속을 눌러 다음 단계로 진행해 줍니다.
안전한 환경으로 돌아가기를 누르면 진행이 안됩니다. 꼭 고급을 클릭해 주세요.
제일 아래쪽에 있는 '데이터 입력 연습(으)으로 이동(안전하지 않음)을 클릭하여 승인을 완료해 주세요.
안전하지 않다는 문구가 뜨는 이유는, 내가 만든 스크립트라면 아무 문제가 없지만 혹시 다른 사람이 좋지 않은 목적으로 나쁜 결과를 일으키는 스크립트를 작성했을 경우 내 데이터가 탈취되거나 심지어 컴퓨터가 망가질 수도 있기 때문에 경고성 문구를 넣어놓은 것입니다.
내가 만든 스크립트라면 승인을 하시고 혹시 인터넷에서 자료를 내려받았는데 스크립트 권한을 요구한다면 승인 거부를 하세요(믿을 만한 것이라면 오케이).
이제 모든 단계가 마무리되었습니다.
입력 버튼을 눌러서 데이터를 입력해 보도록 하겠습니다.
data시트에 내용이 잘 입력이 되었네요.
기본적으로 스크립트 구성은 위와 같이 하면 됩니다.
입력란이 늘어나면 늘어나는 만큼 추가해 주면 되겠죠?
위 내용을 기초로 하여 만드시고 싶은 양식을 하나씩 만들어 보세요.
안 되는 것이 있더라도 시간을 두고 과정을 거치다 보면 돌 터지는(깨달아지는) 순간이 옵니다.
도움이 되셨다면 공감 꾹 눌러주시고 혹 어려운 점 있으시면 댓글 달아 주세요.
감사합니다.
'구글 스프레드시트(Google Spreadsheet) > Apps Script' 카테고리의 다른 글
구글 스프레드시트 Apps Script, 데이터 입력을 위한 스크립트 (0) | 2022.12.30 |
---|---|
구글 스프레드시트 앱스 스크립트 명령어를 실행시키기 위한 버튼 만들기 (1) | 2022.12.13 |
댓글