1. Apps Script에 오신 것을 환영합니다
Apps Script란 무엇인가요?
Apps Script는 Google Workspace 환경을 자동화, 맞춤설정, 확장할 수 있는 빠른 애플리케이션 개발 플랫폼입니다. Apps Script를 사용하면 Google Workspace 내에서 번거롭거나 복잡한 작업을 간소화하여 시간과 노력을 절약할 수 있습니다.
Apps Script 기능에는 다음이 포함됩니다.
- Apps Script의 기본 제공 서비스를 사용하면 스크립트로 Google Workspace 애플리케이션 데이터를 읽고, 업데이트하고, 조작할 수 있습니다.
- Apps Script의 브라우저 내 코드 편집기를 사용하여 스크립트를 만들 수 있습니다. 코드 개발 소프트웨어를 설치하거나 실행할 필요가 없습니다.
- 메뉴 항목, 대화상자, 사이드바를 사용하여 Google Workspace 편집기에서 직접 스크립트를 활성화할 수 있는 Google Workspace 편집기용 사용자 인터페이스를 설계할 수 있습니다.
이 Google Sheets를 사용한 Apps Script 기본사항 Codelab 재생목록에서는 Apps Script의 기본사항과 이를 사용하여 Google Sheets 환경을 개선하는 방법을 알아봅니다. 이 Codelab에서는 Apps Script 기본사항을 중점적으로 다룹니다.
스프레드시트 서비스
Apps Script를 사용하여 Google Sheets를 확장하여 시간과 노력을 절약할 수 있습니다. Apps Script는 스크립트가 Google Sheets 파일 및 포함된 데이터와 상호작용할 수 있는 스프레드시트 서비스를 제공합니다. 이 서비스를 사용하여 다음과 같은 일반적인 스프레드시트 작업을 자동화할 수 있습니다.
- 스프레드시트를 만들거나 수정합니다.
- 셀 데이터, 수식, 서식을 읽고 업데이트합니다.
- 맞춤 버튼 및 메뉴를 만듭니다.
- 다른 Google 애플리케이션 또는 서드 파티 소스에서 데이터를 가져오고 내보냅니다.
- 스프레드시트의 액세스 권한을 공유하고 관리합니다.
학습할 내용
이 재생목록에서는 Google Sheets에서 Apps Script를 시작하는 데 필요한 모든 주제를 다룹니다.
이 재생목록의 Codelab은 순서대로 읽도록 되어 있으므로 이 Codelab부터 시작하여 순서대로 완료하는 것이 가장 좋은 학습 경험을 제공합니다.
다음 섹션으로 이동하여 이 Codelab의 콘텐츠에 관해 자세히 알아보세요.
2. 소개
이 재생목록의 첫 번째 Codelab에 오신 것을 환영합니다. 이 Codelab에서는 Google Sheets에서 Apps Script를 사용하는 기본사항을 알아봅니다. 특히 이 Codelab에서는 매크로와 맞춤 함수라는 두 가지 핵심 개념에 중점을 둡니다.
매크로는 Google Sheets 내에서 기록된 일련의 작업입니다. 녹화가 완료되면 메뉴 항목이나 단축키를 사용하여 나중에 이러한 작업을 반복하는 매크로를 활성화할 수 있습니다. Google Sheets와 Apps Script 코드 편집기에서 모두 매크로를 만들고 업데이트할 수 있습니다.
Apps Script 코드 편집기에서 맞춤 함수를 만들 수도 있습니다. Sheets에서 제공하는 기본 제공 함수(예: SUM
또는 AVERAGE
)와 마찬가지로 Apps Script를 사용하여 변환이나 문자열 연결과 같은 간단하고 특수한 작업을 위한 맞춤 함수를 작성할 수 있습니다. 만들어진 후에는 기본 제공 함수처럼 Sheets에서 이러한 함수를 호출할 수 있습니다. 작성하는 셀 수식에서 커스텀 함수를 사용할 수도 있으며, 필요에 따라 다른 함수와 결합할 수 있습니다.
아래에서 이 Codelab과 관련된 개념과 요구사항을 알아보세요.
학습할 내용
- Google Sheets용 스크립트를 만드는 방법
- Apps Script 편집기를 탐색하는 방법
- 매크로를 만들고 업데이트하는 방법
- 첫 번째 Sheets 커스텀 함수를 만드는 방법
필요한 항목
- JavaScript에 관한 기본 지식
- Google Sheets에 관한 기본 지식
- Sheets A1 표기법을 읽을 수 있음
소개 부분이 끝났습니다. 다음 섹션으로 이동하여 매크로 작업을 시작하세요.
3. Sheets에서 매크로 만들기
일반적으로 스프레드시트에서 작업할 때 셀 값 복사, 서식 지정, 수식 만들기 등 반복적인 작업의 루프에 들어갈 수 있으며, 이로 인해 지루해지고 실수가 발생할 수 있습니다. 반복되는 작업을 자동화하기 위해 Google Sheets에서는 매크로를 제공합니다. 매크로를 사용하면 시트에서 일련의 작업을 '기록'할 수 있습니다. 기록된 매크로를 사용하면 간단한 단축키 누르기로 스프레드시트의 다른 위치에서 동일한 작업을 반복할 수 있습니다.
이 섹션에서는 Sheets에서 매크로를 빌드하는 방법을 알아봅니다. 다음 섹션에서는 Apps Script를 사용하여 매크로를 빌드하는 방법을 알아봅니다.
시작하기 전에
계속하기 전에 데이터가 포함된 스프레드시트가 필요합니다. 이 링크를 클릭하여 데이터 시트를 복사한 다음 사본 만들기를 클릭하세요.
사용할 수 있는 예시 스프레드시트의 사본이 Google Drive 폴더에 배치되고 'Copy of Top 10 Highest Grossing Films (2018)'이라는 이름이 지정됩니다.
매크로 만들기
이제 사용할 스프레드시트가 있으므로 Google Sheets에서 매크로를 기록할 수 있습니다. 이 예에서는 데이터의 헤더 행을 서식 지정하는 매크로를 만듭니다. 다음 단계를 따르세요.
- A1 셀을 클릭하여 커서를 행에 배치합니다. 이것이 헤더 행입니다.
- 메뉴에서 확장 프로그램 > 매크로 > 매크로 기록을 선택합니다.
녹화를 시작하면 Google Sheets에서 셀 강조 표시, 데이터 추가, 다른 시트로 전환, 서식 지정 등 스프레드시트 내에서 수행하는 모든 작업을 기억합니다. 이러한 작업은 나중에 매크로를 저장하고 활성화하면 반복되는 '스크립트'가 됩니다.
- 매크로 대화상자에서 상대 참조를 선택합니다.
- 1행을 선택합니다.
- 상단 행의 채우기 색상을 흰색에서 진한 마젠타 3으로 다시 색칠합니다.
- 상단 행의 텍스트 색상을 검은색에서 흰색으로 변경합니다.
- 텍스트를 굵게 하려면 Ctrl+B (macOS의 경우 Cmd+B)를 누릅니다.
- 상단 행을 고정하려면 보기 > 고정 > 1행을 선택합니다.
- 매크로 대화상자에서 저장을 클릭합니다. 매크로 이름을 지정하라는 새 대화상자가 표시됩니다. 'Header'(헤더)라는 이름을 입력하고 Save(저장)를 클릭합니다.
Sheets의 사용자 인터페이스를 사용하여 헤더 서식 지정에 특화된 매크로를 만들었습니다.
매크로 활성화하기
다음 안내에 따라 Sheets에서 새 매크로를 적용할 수 있습니다.
- 시트를 만들려면 시트 추가
를 클릭합니다.
- 새 시트의 A1:C2에 텍스트를 추가합니다. 아래 예시 입력을 참고하세요.
- 첫 번째 행을 강조 표시합니다.
- 선택한 영역에 매크로를 적용하려면 확장 프로그램> 매크로> 헤더를 클릭합니다.
- 화면에 표시된 안내에 따라 매크로를 승인합니다.
- 4단계를 반복하여 매크로를 다시 실행합니다 (승인하면 첫 번째 실행이 중지됨).
수고하셨습니다. Sheets에서 매크로를 적용하는 방법을 배웠습니다. 스프레드시트는 다음과 같이 표시됩니다.
매크로를 사용하면 스프레드시트를 효율적으로 만들 수 있으며, 이 Codelab의 다음 파트에서는 매크로를 더욱 강력하게 만드는 방법을 알아봅니다. 비밀은 매크로를 녹화할 때 실제로 Apps Script를 작성한다는 것입니다. Sheets는 매크로 작업과 일치하는 코드를 구성합니다. 다음 섹션에서는 Apps Script의 브라우저 내 편집기를 사용하여 코드를 직접 수정하는 방법을 알아봅니다.
4. 스크립트 편집기의 매크로
매크로를 만들면 Google Sheets에서 내 작업을 Apps Script 함수로 저장합니다. 매크로를 활성화하면 Google Sheets에서 Apps Script 함수를 호출하여 동일한 순서로 이러한 작업을 적용합니다.
스크립트 편집기
이제 매크로를 만들었으므로 코드를 살펴볼 수 있습니다. 매크로 스크립트를 보려면 확장 프로그램> Apps Script를 클릭하여 Apps Script의 브라우저 코드 편집기를 엽니다.
스크립트 편집기를 사용하면 Apps Script에서 코드를 작성하고 Google 서버에서 해당 스크립트를 실행할 수 있습니다.
macros.gs
분석
현재 스크립트를 검토합니다. Header
매크로를 기록할 때 Sheets에서 macros.gs
스크립트 파일을 만들고 Header
이라는 해당 Apps Script 함수를 채웠습니다. Header
매크로를 활성화하면 Sheets에서 이 함수를 실행합니다.
아래 이미지를 보고 Apps Script의 매크로 함수 구조를 숙지하세요. 단계를 다른 순서로 기록했거나 기록하는 동안 스프레드시트를 클릭한 경우 코드가 약간 다를 수 있습니다.
첫 번째 줄은 승인에 영향을 미치는 주석입니다.
/** @OnlyCurrentDoc */
대부분의 스크립트는 실행되기 전에 사용자에게 권한을 요청합니다. 이러한 권한은 사용자가 스크립트가 할 수 있도록 허용하는 작업을 제어합니다. 스크립트 프로젝트에 @OnlyCurrentDoc
주석이 있으면 Apps Script는 현재 스프레드시트에 액세스하고 업데이트할 권한만 요청합니다. 이 주석이 없으면 Apps Script에서 사용자의 모든 스프레드시트에 액세스하고 업데이트할 권한을 요청합니다. 단일 파일로만 작업하는 경우 이 주석을 포함하는 것이 항상 좋습니다. 매크로 레코더는 이 주석을 자동으로 추가합니다.
Apps Script에서 매크로의 명령어를 어떻게 나타내는지 알아보려면 다음 함수를 확인하세요.
function Header(){
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
spreadsheet.getCurrentCell().getRow(),
1, 1, sheet.getMaxColumns()).activate();
spreadsheet.getActiveRangeList().setBackground('#4c1130')
.setFontColor('#ffffff')
.setFontWeight('bold');
spreadsheet.getActiveSheet().setFrozenRows(1);
};
이 코드는 Header
매크로를 활성화할 때 실행됩니다. function
뒤에 나오는 라벨 Header()
은 함수의 이름과 매개변수를 정의합니다. Apps Script의 매크로 함수에는 입력이 필요하지 않으므로 Header()
에는 매개변수가 필요하지 않습니다. 중괄호는 항상 Apps Script에서 함수의 본문을 묶습니다.
이 재생목록의 후반부 Codelab에서는 매크로 생성과 관련된 클래스와 개념을 설명합니다. 지금은 다음 코드 설명을 통해 구성요소와 매크로 구성 시의 역할을 대략적으로 파악할 수 있습니다. 첫 번째 줄을 살펴보세요.
var spreadsheet = SpreadsheetApp.getActive();
여기서 getActive()
는 Sheets의 현재 활성 스프레드시트 파일을 나타내는 객체를 반환하고 이를 새 변수 spreadsheet
에 설정합니다.
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
spreadsheet.getCurrentCell().getRow(),
1, 1, sheet.getMaxColumns()).activate();
이러한 줄은 첫 번째 행을 클릭하여 강조 표시하는 작업에 해당합니다. 이를 활성화라고 합니다. 첫 번째 줄은 현재 시트를 sheet
변수에 저장하고 두 번째 줄은 getRange()
메서드를 사용하여 전체 첫 번째 행을 가져온 다음 activate()
를 호출하여 활성화합니다. 첫 번째 행은 특정 행 및 열 번호를 사용하여 지정됩니다. spreadsheet.getCurrentCell().getRow()
호출은 현재 행의 수를 반환하고 sheet.getMaxColumns()
는 시트의 최대 열 수를 반환합니다.
spreadsheet.getActiveRangeList().setBackground('#4c1130')
.setFontColor('#ffffff')
.setFontWeight('bold');
이 코드 부분은 더 복잡해집니다. spreadsheet
로 메서드를 효율적으로 호출하기 위해 코드는 getActiveRangeList()
에 세 개의 메서드를 스택하여 코드가 이 spreadsheet
메서드를 두 번 이상 중복 호출하지 않도록 합니다. Apps Script를 사용하여 코딩을 많이 할수록 하나의 클래스에서 여러 메서드를 호출하는 이 규칙 (메서드 체이닝이라고도 함)에 더 익숙해질 것입니다. 지금은 코드 블록의 각 메서드에 관한 간략한 설명을 다음에서 확인할 수 있습니다.
getActiveRangeList()
는spreadsheet
에서 현재 활성RangeList
를 반환합니다. 이 경우 이전 줄에서 활성화된 첫 번째 행입니다.setBackground(color)
및setFontColor(color)
메서드는 모두 활성 범위의 셀 색상 속성을 변경합니다.setFontWeight(fontWeight)
는 활성 범위의 셀 글꼴 두께를 조정합니다.
마지막으로 최종 줄은 매크로의 첫 번째 행을 고정합니다.
spreadsheet.getActiveSheet().setFrozenRows(1);
매크로를 녹음할 때 생성된 스크립트입니다. 위에서 언급된 생소한 용어나 방법은 걱정하지 않으셔도 됩니다. 이 설명은 일반적인 매크로 함수에서 Apps Script가 중점을 두는 아이디어와 향후 Codelab에서 자세히 다룰 주제를 생각해 보도록 하기 위한 것입니다.
다음 섹션에서는 스크립트 편집기를 사용하여 매크로를 추가로 맞춤설정하는 방법을 보여주기 위해 Header()
함수의 코드를 조작하는 데 중점을 둡니다.
Apps Script로 매크로 맞춤설정하기
Apps Script 편집기에 이전에 Google Sheets에서 만든 매크로가 표시됩니다. 함수 본문의 내용을 조정하면 매크로의 안내를 추가로 맞춤설정하여 다른 작업이나 추가 작업을 실행할 수 있습니다. 다음 연습에서는 스크립트 편집기로 매크로를 조작하는 다양한 방법을 보여줍니다.
영향을 받는 셀 변경
전체 행이 아닌 첫 번째 행의 처음 10개 열에만 영향을 미치도록 매크로를 수정한다고 가정해 보겠습니다. 매크로를 삭제하고 다시 녹음하면 됩니다. 하지만 Apps Script 편집기를 사용하면 이러한 변경사항을 직접 적용할 수 있습니다. 다음은 한 가지 방법입니다.
- 스크립트 편집기에서
sheet.getMaxColumns()
를10
로 바꿉니다. 이 수정사항은 매크로가 스프레드시트에서 영향을 미치는 셀의 범위를 변경합니다.
/** @OnlyCurrentDoc */
function Header(){
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
spreadsheet.getCurrentCell().getRow(),
1, 1, 10).activate();
/* sheet.getMaxColumns() replaced with 10.*/
spreadsheet.getActiveRangeList().setBackground('#4c1130')
.setFontColor('#ffffff')
.setFontWeight('bold');
spreadsheet.getActiveSheet().setFrozenRows(1);
}
- 스크립트를 저장하려면 저장
을 클릭합니다.
- 프로젝트 이름을 바꾸려면 새 프로젝트 이름으로 '매크로 및 맞춤 함수'를 입력하고 이름 바꾸기를 클릭합니다.
- 시트를 만들려면 Sheets에서 시트 추가
를 클릭합니다.
- 스크립트 편집기에서 함수 목록에서
Header
를 선택하고 실행을 클릭합니다.
새 시트에 다음 결과가 표시됩니다.
활성 또는 타겟 범위를 수정하면 이제 매크로가 첫 번째 행의 일부에만 영향을 미칩니다. 많은 Apps Script 메서드는 범위 또는 A1 표기법을 매개변수로 사용하여 어떤 셀에 대해 작업을 실행할지 지정합니다.
다음으로 매크로 색상을 맞춤설정하는 방법을 알아보겠습니다.
매크로 색상 변경하기
Sheets에서 매크로 또는 기타 요소의 색상 구성표를 디자인할 수 있도록 Apps Script를 사용하면 범위의 채우기 또는 텍스트 색상을 수정할 수 있습니다. 다음 안내에 따라 매크로의 색상을 맞춤설정하는 방법을 알아보세요.
이 안내에서는 매크로의 배경 색상을 변경하는 데 중점을 둡니다.
- Google Sheets에서 원본 데이터가 포함된 시트 (시트 1)로 다시 전환합니다.
- 첫 번째 행을 클릭하여 강조 표시합니다.
- 스크립트 편집기에서 배경색
#4c1130
를#afeeee
로 바꿉니다. 이러한 값은 16진수 3중 표기법을 사용하여 다양한 색상을 나타냅니다.
/** @OnlyCurrentDoc */
function Header(){
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
spreadsheet.getCurrentCell().getRow(),
1, 1, 10).activate();
spreadsheet.getActiveRangeList().setBackground('#afeeee')
/* #4c1130 replaced with #afeeee.*/
.setFontColor('#ffffff')
.setFontWeight('bold');
spreadsheet.getActiveSheet().setFrozenRows(1);
}
- 스크립트를 저장하려면 저장
을 클릭합니다.
- 함수 목록에서
Header
를 선택하고 실행을 클릭합니다.
Sheets에서 첫 번째 행의 처음 10개 열의 배경 채우기가 맞춤 청록색으로 다시 색칠됩니다.
setBackground(color)
의 매개변수에서 16진수 색상 표기법을 #4c1130
(어두운 마젠타 3)에서 #afeeee
(옅은 청록색, Sheets의 기본 색상 메뉴에서 액세스할 수 없는 옵션)으로 전환하면 매크로의 배경 색상 색상 속성이 변경됩니다.
이제 매크로에서 설정한 배경 색상을 수정했습니다. 텍스트 색상도 변경하려면 두 번째 색상 코드를 변경하세요.
- Sheets에서 첫 번째 행을 클릭하여 강조 표시되어 있는지 확인합니다.
- 스크립트 편집기에서 글꼴 색상
#ffffff
를#191970
로 바꿉니다. 이렇게 하면 매크로가 짙은 파란색의 글꼴 색상을 설정합니다.
/** @OnlyCurrentDoc */
function Header(){
var spreadsheet = SpreadsheetApp.getActive();
var sheet = spreadsheet.getActiveSheet();
sheet.getRange(
spreadsheet.getCurrentCell().getRow(),
1, 1, 10).activate();
spreadsheet.getActiveRangeList().setBackground('#afeeee')
.setFontColor('#191970')/* #ffffff replaced with #191970.*/
.setFontWeight('bold');
spreadsheet.getActiveSheet().setFrozenRows(1);
}
- 스크립트를 저장하려면 저장
을 클릭합니다.
- 함수 목록에서
Header
를 선택하고 실행을 클릭합니다.
시트로 돌아가면 이제 머리글 행의 텍스트 색상이 남색으로 표시됩니다.
이제 매크로가 Apps Script 코드로 기록된 실제 Sheets 작업인 것을 확인했습니다. 다음 섹션에서는 Apps Script가 Google Sheets를 사용하는 데 도움이 되는 또 다른 방법인 맞춤 함수를 살펴봅니다.
5. 첫 번째 스크립트 코딩: 맞춤 함수
대부분의 스프레드시트 애플리케이션과 마찬가지로 Google Sheets에는 스프레드시트 데이터에 대한 빠른 계산을 지원하는 =SUM()
와 같은 여러 기본 수식 함수가 있습니다. 맞춤 함수는 Apps Script를 사용하여 지정하는 함수입니다. 맞춤 함수를 정의하고 나면 기본 제공 함수처럼 스프레드시트의 어느 곳에서나 사용할 수 있습니다.
이 섹션에서는 Apps Script에서 금액 변환을 실행하는 맞춤 함수를 만드는 방법을 보여줍니다.
스크립트 파일 만들기
매크로 섹션의 동일한 스프레드시트와 스크립트 프로젝트를 사용하여 다음 안내에 따라 새 스크립트를 만드는 방법을 알아보세요. 이 스크립트를 사용하여 첫 번째 맞춤 함수를 만들 수 있습니다.
- Apps Script 파일을 만들려면 스크립트 편집기로 돌아갑니다.
- 파일 옆에 있는 파일 추가
> 스크립트를 클릭합니다.
- 새 스크립트 파일 이름을
customFunctions
로 지정하고 Enter 키를 누릅니다. (Apps Script는 스크립트 파일 이름에.gs
확장자를 자동으로 추가합니다.)
편집기 내에 customFunctions.gs
라는 새 탭이 표시됩니다.
이제 맞춤 함수 전용 스크립트를 만들었으므로 코드를 입력할 수 있습니다.
미국 달러를 스위스 프랑으로 변환
'2018년 수익 상위 10개 영화'의 데이터를 수정하여 전 세계 총수익을 미국 달러뿐만 아니라 스위스 프랑으로도 표시하고 싶다고 가정해 보겠습니다. 맞춤 함수를 사용하면 쉽게 이 작업을 할 수 있습니다. 다음 연습에서는 달러 값을 프랑 값으로 수학적으로 변환하는 맞춤 함수를 만드는 방법을 보여줍니다.
첫 번째 맞춤 함수를 작성하기 전에 함수가 적절한 출력을 표시할 수 있도록 데이터 세트를 수정하세요. 방법은 다음과 같습니다.
- Sheets에서 H열을 마우스 오른쪽 버튼으로 클릭합니다.
- 결과 메뉴에서 오른쪽에 1개 삽입을 클릭합니다.
- I1 셀에 'Worldwide_Gross (Swiss francs)' 열을 라벨링합니다.
이제 변환 맞춤 함수의 결과를 저장할 수 있는 열이 있습니다. 그런 다음 스크립트 편집기를 사용하여 첫 번째 맞춤 함수를 만들 수 있습니다.
customFunctions.gs
에서myFunction()
코드를 다음 코드로 바꿉니다.
/**
* Converts US dollars to Swiss francs.
*
* @param {number} dollars The total number of dollars.
* @return {number} swissFrancs The converted total of Swiss francs.
* @customfunction
*/
function USDTOCHF(dollars){
var swissFrancs = dollars * .99;
return swissFrancs;
}
이 코드는 미국 달러를 스위스 프랑으로 변환합니다. 아래 안내를 따라 스프레드시트에서 맞춤 함수를 실행하는 방법을 알아보세요.
- 스크립트를 저장하려면 저장
을 클릭합니다.
- 스프레드시트에서 I2 셀을 선택합니다.
- 함수 표시줄에
=USDTOCHF(H2)
를 입력합니다.
열의 나머지 셀에 수식을 적용하려면 다음 단계를 따르세요.
- 커서를 I2 셀의 오른쪽 하단으로 이동하고 작은 파란색 상자를 선택합니다 (파란색 상자를 가리키면 커서가
로 변환됨).
- 파란색 상자를 아래로 드래그하여 I3:I11 범위를 강조 표시합니다.
이제 I열에 H열의 미국 달러 값이 스위스 프랑으로 변환되어 표시됩니다.
축하합니다. 첫 번째 맞춤 함수를 만들었습니다. 다음 섹션에서는 USDTOCHF()
을 구성하는 코드를 설명합니다.
USDTOCHF()
분석
초기 주석에는 코드의 목적이 자세히 설명되어 있습니다.
/**
* Converts US dollars to Swiss francs.
*
* @param {number} dollars The total number of dollars.
* @return {number} swissFrancs The provided value in Swiss francs.
* @customfunction
*/
이와 같은 주석 블록은 프로그래밍에서 함수의 기능을 설명하는 데 자주 사용됩니다.
이 주석에서는 함수 설명 (달러를 프랑으로 변환)과 함수의 매개변수 및 반환 유형을 설명하는 주석이라는 두 부분을 확인할 수 있습니다.
Apps Script는 주석을 사용하여 JSDoc을 활용하여 코드의 자동 완성 힌트를 문서화하고 생성합니다. USDTOCHF()
에 사용된 각 주석이 Apps Script 개발에 어떻게 도움이 되는지 아래에서 확인할 수 있습니다.
@param
:@param
주석을 사용하여 함수에 전달된 각 매개변수를 설명할 수 있습니다.@return
:@return
주석을 사용하여 함수가 반환하는 값을 설명할 수 있습니다.@customfunction
: 모든 맞춤 함수의 문서 댓글에 항상@customfunction
를 추가해야 합니다. 이 주석은 아래와 같이 셀에 함수 이름을 입력할 때 Sheets에서 내장 함수를 자동 완성하는 것과 마찬가지로 맞춤 함수를 자동 완성하도록 Sheets에 알립니다.
자동 완성 팝업에 표시되는 텍스트가 댓글 블록에 배치한 설명 텍스트와 정확히 일치합니다. 만드는 설명이 잘 작성되고 완전한지 확인하여 맞춤 함수를 더 쉽게 사용할 수 있습니다.
다음으로 USDTOCHF()
함수의 코드에 집중합니다.
function USDTOCHF(dollars){
var swissFrancs = dollars * .99;
return swissFrancs;
}
앞서 언급한 것처럼 USDTOCHF()
는 숫자 변수 dollars를 가져와 고정 환율을 곱하고 숫자 변수 swissFrancs
에서 스위스 프랑으로 변환된 값을 반환합니다. 입력 매개변수는 셀에 맞춤 함수를 추가할 때 지정된 셀에 포함된 값입니다. 이 예시에서는 입력 달러 금액이 H열에서 가져옵니다. 출력 값 swissFrancs
은 함수의 셀 (이 예에서는 열 I)에 배치됩니다.
다음 섹션에서 살펴보겠지만 맞춤 함수는 숫자 또는 문자열 값과 함께 사용할 수 있습니다.
문자열 접두사 연결
함수 USDTOCHF()
의 숫자 출력에 스위스 프랑 접두사 CHF
를 포함한다고 가정해 보겠습니다. 다음 안내에 표시된 대로 연결 연산자 (+
),
를 사용하여 Apps Script로 이 작업을 할 수 있습니다.
- 스크립트 편집기에서 숫자 대신 문자열을 반환하도록
@return
주석을 업데이트합니다. return swissFrancs
를return 'CHF' + swissFrancs
로 변경합니다.
+
연산자는 swissFrancs
에 포함된 값 앞에 CHF
문자열을 추가합니다. 이제 코드가 다음과 같이 표시됩니다.
/**
* Converts US dollars to Swiss francs.
*
* @param {number} dollars The total number of dollars.
* @return {string} swissFrancs The provided value in Swiss francs.
* @customfunction
*/
function USDTOCHF(dollars){
var swissFrancs = dollars * .99;
return 'CHF' + swissFrancs;
}
- 스크립트를 저장하려면 저장
을 클릭합니다.
이제 스위스 프랑 문자열이 I열의 값에 접두사로 붙습니다.
이제 맞춤 함수가 미국 달러를 스위스 프랑으로 변환할 뿐만 아니라 문자열 접두사와 함께 통화를 출력합니다.
고급: 외부 데이터 가져오기
기본 맞춤 함수를 시작하기에는 좋지만 이 예에서는 달러에서 스위스 프랑으로의 환율이 일정하다고 가정합니다. 대신 현재 환율을 사용하여 시트를 다시 로드할 때마다 현재 변환을 나타내도록 값을 다시 계산한다고 가정해 보겠습니다. 이를 위해서는 현재 환율을 확인할 수 있는 방법이 필요합니다. Google Sheets에서는 이 정보를 바로 확인할 수 없지만, 다행히 Apps Script를 사용하면 확인할 수 있습니다.
아래와 같은 코드를 사용하여 스위스 프랑에서 미국 달러로의 현재 환율을 확인할 수 있습니다.
function USDTOCHF(dollars){
// Gets a cache that is common to all users of the script.
var cache = CacheService.getScriptCache();
// Accesses the memory location (rates.CHF) of the script cache.
var rate = cache.get('rates.CHF');
// If a cache miss occurs, the program fetches the current
// CHF rate from an API and stores the rate in the cache
// for later convenience.
if (!rate) {
var response =
UrlFetchApp.fetch('https://api.exchangeratesapi.io/latest?base=USD');
var result = JSON.parse(response.getContentText());
rate = result.rates.CHF;
cache.put('rates.CHF', rate);
}
// Converts dollars to CHF according to the latest rate.
var swissFrancs = dollars * rate;
// Returns the CHF value.
return 'CHF' + swissFrancs;
}
이 코드는 서드 파티 환율 API를 사용하여 금융 정보 서버에서 현재 환율을 가져옵니다. 이 작업은 UrlFetchApp
, CacheService
과 같은 Apps Script 서비스를 사용하여 실행됩니다. 이러한 고급 개념은 이 Codelab의 범위를 벗어나지만 Apps Script의 다재다능함을 통해 Google Sheets에서 복잡한 작업을 자동화할 수 있습니다.
맞춤 함수 가이드라인
맞춤 함수 연습을 완료하신 것을 축하드립니다. 프로젝트에서 커스텀 함수를 사용할 때는 특정 제한사항이 있다는 점을 이해하는 것이 중요합니다. 다음 목록에는 Google Sheets의 맞춤 함수 가이드에 자세히 설명된 제한사항이 요약되어 있습니다.
- 사용자 승인이 필요한 맞춤 함수를 만들지 마세요. 대신 샘플 데이터 계산, 텍스트 수정 등 간단한 작업을 수행하는 맞춤 함수를 빌드하세요. Apps Script 서비스 사용을 참고하세요.
- 맞춤 함수 이름을 다른 기본 제공 함수와 동일하게 지정하거나 이름이 밑줄로 끝나지 않도록 합니다. 이름 지정 가이드라인을 검토합니다.
- 맞춤 함수에 변수 인수를 전달하지 마세요. 결정적 (고정) 값만 맞춤 함수에 인수로 전달할 수 있습니다.
=RAND()
의 결과와 같은 변수 인수를 전달하면 맞춤 함수가 중단됩니다. 인수 가이드라인을 참고하세요. - 완료하는 데 30초 이상 걸리는 함수를 만들지 마세요. 시간이 오래 걸리면 오류가 발생하므로 함수 코드를 간단하게 유지하고 범위를 제한하세요. 맞춤 함수에서 실행되는 계산은 최대한 간단하게 유지하는 것이 좋습니다. 반환 값 가이드라인을 확인하세요.
이제 스크립트 편집기를 사용하여 매크로를 처리하고 맞춤 함수를 만들어 스프레드시트를 개선할 수 있습니다. 다음 섹션에서는 학습한 내용과 스크립팅 기술을 향상하기 위해 할 수 있는 작업을 검토할 수 있습니다.
6. 결론
Google Sheets를 사용한 Apps Script 기본사항의 첫 번째 Codelab을 완료했습니다. 스프레드시트 매크로와 맞춤 함수를 만들고 수정하면서 기본적인 Apps Script 개념을 배웠습니다. 다음 Codelab에서 Apps Script에 관해 자세히 알아볼 수 있습니다.
이 Codelab이 도움이 되었나요?
학습한 내용
- 기본 Apps Script 개념
- 스크립트 편집기를 탐색하는 방법
- 시트 매크로를 만들고 업데이트하는 방법
- Google Sheets용 맞춤 함수를 만드는 방법
다음 단계
이 재생목록의 다음 Codelab에서는 Apps Script 스프레드시트 서비스의 핵심 클래스와 용어를 소개합니다. 이 서비스를 사용하면 Apps Script를 사용하여 Google Sheets의 값과 데이터 표시를 세밀하게 제어할 수 있습니다.
다음 Codelab은 스프레드시트, Sheets, 범위에서 확인할 수 있습니다.