Google Sheets를 사용한 Apps Script 기초 #1: 매크로 및 맞춤 함수

1. Apps Script에 오신 것을 환영합니다

Apps Script란 무엇인가요?

Apps ScriptGoogle Workspace 환경을 자동화, 맞춤설정, 확장하는 기능을 제공하는 빠른 애플리케이션 개발 플랫폼입니다. Apps Script를 사용하면 Google Workspace에서 번거롭거나 복잡한 작업을 간소화하여 시간과 노력을 절약할 수 있습니다.

Apps Script 기능에는 다음이 포함됩니다.

  • Apps Script의 기본 제공 서비스를 사용하면 스크립트를 사용하여 Google Workspace 애플리케이션 데이터를 읽고 업데이트하고 조작할 수 있습니다.
  • 브라우저 내 코드 편집기를 사용하여 스크립트 작성을 하거나 코드를 개발할 필요 없이 Apps Script를 사용하여 스크립트를 만들 수 있습니다.
  • 메뉴 항목, 대화상자, 사이드바를 사용하여 이러한 편집기에서 직접 스크립트를 활성화할 수 있는 Google Workspace 편집기의 사용자 인터페이스를 디자인할 수 있습니다.

이 Google Sheets 기반 Apps Script 기초사항 Codelab에서는 Apps Script의 기본사항과 이를 사용하여 Google Sheets 환경을 개선하는 방법을 배울 수 있습니다. 이 Codelab에서는 Apps Script 기본사항을 중점적으로 설명합니다.

스프레드시트 서비스

Apps Script를 사용하면 Google Sheets를 확장하여 시간과 노력을 절약할 수 있습니다. Apps Script는 스크립트가 Google 시트 파일과 여기에 포함된 데이터와 상호작용할 수 있는 스프레드시트 서비스를 제공합니다. 이 서비스를 사용하여 다음과 같은 일반적인 스프레드시트 작업을 자동화할 수 있습니다.

  • 스프레드시트를 만들거나 수정합니다.
  • 셀 데이터, 수식, 서식 읽기 및 업데이트
  • 맞춤 버튼 및 메뉴를 만듭니다.
  • 다른 Google 애플리케이션 또는 타사 소스에서 데이터를 가져오고 내보냅니다.
  • 스프레드시트에 대한 액세스 및 공유 관리

학습할 내용

이 재생목록은 Google Sheets에서 Apps Script를 사용하는 데 필요한 모든 주제를 다룹니다.

  1. 매크로 및 맞춤 함수
  2. 스프레드시트, 스프레드시트 및 범위
  3. 데이터 작업
  4. 데이터 형식 지정
  5. Slides 데이터 차트 작성 및 발표하기

이 Codelab의 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 커스텀 함수를 만드는 방법

필요한 항목

소개를 마쳤습니다. 다음 섹션으로 이동하여 매크로 사용을 시작하세요.

3. Sheets에서 매크로 만들기

일반적으로 스프레드시트에서 작업할 때 셀 값 복사, 서식 지정, 수식 만들기 등 반복적인 작업을 반복하면 지루할 뿐만 아니라 실수가 발생할 수 있습니다. Google Sheets에서는 반복되는 작업을 자동화할 수 있도록 매크로를 제공합니다. 매크로를 사용하면 일련의 작업을 시트에 기록할 수 있습니다. 매크로 매크로를 사용하여 간단히 단축키를 눌러 스프레드시트의 다른 곳에서도 같은 작업을 반복할 수 있습니다.

이 섹션에서는 Sheets에서 매크로를 빌드하는 방법을 알아봅니다. 다음 섹션에서는 Apps Script를 사용하여 매크로가 빌드되는 방법을 알아봅니다.

시작하기 전에

계속하려면 일부 데이터가 포함된 스프레드시트가 필요합니다. Google에서 제공하는 링크를 클릭하여 데이터 시트를 복사한 다음 사본 만들기를 클릭하세요.

5b8aded1bb349ecf.png

사용할 수 있는 예시 스프레드시트 사본이 Google Drive 폴더에 있으며 '최고 매출 동영상 2018 (2018)'의 이름을 '"사본'으로 지정합니다.

매크로 만들기

작업할 스프레드시트가 있으므로 Google Sheets에서 매크로를 기록할 수 있습니다. 이 예에서는 데이터의 헤더 행 형식을 지정하는 매크로를 만듭니다. 다음 단계를 따르세요.

  1. 셀 A1을 클릭하여 커서를 행에 놓습니다. 헤더 행입니다.
  2. 메뉴에서 Extensions(확장 프로그램)> Macros(매크로)> Record Macros(매크로 기록)를 선택합니다.

녹음을 시작하면 Google Sheets에서 셀 강조표시, 데이터 추가, 다른 시트로의 전환, 서식 지정 등 내에서 수행하는 모든 작업을 기억합니다. 이러한 동작은 나중에 매크로를 저장하고 활성화할 때 반복되는 '스크립트&#39'가 됩니다.

  1. 매크로 대화상자에서 상대 참조를 선택합니다.

C59f2f12317352d2.gif

  1. 1번 행을 선택합니다.

1d782ee30c66a02b.gif

  1. 맨 위 행의 채우기 색상을 흰색에서 다크 자홍색 3으로 바꿉니다.

f7e7abaf76e338c7.png

  1. 맨 위 행의 텍스트 색상을 검은색에서 흰색으로 변경합니다.

D5e630acbe83148.png

  1. 텍스트를 굵게 표시하려면 Ctrl+B(macOS의 경우 Cmd+B)를 누릅니다.
  2. 상단 행을 고정하려면 View > Freefro > 1 row를 선택합니다.

97cb244ffebe8953.png

  1. 매크로 대화상자에서 저장을 클릭합니다. 매크로의 이름을 지정하라는 새 대화상자가 표시됩니다. 이름 "헤더"를 입력하고 저장을 클릭합니다.

b4610a54340da518.gif

Sheets 사용자 인터페이스를 사용하여 헤더 형식 지정을 위한 매크로를 만들었습니다.

4ed7fbed18ea3681.png

매크로 활성화

다음 안내에 따라 Sheets에서 새 매크로를 적용할 수 있습니다.

  1. 시트를 만들려면 시트 추가 9c9b0c19bf317e7f.png를 클릭합니다.

927c012b4e11475b.png

  1. 새 시트에서 A1:C2에 텍스트를 추가합니다. 아래 예시 예시를 자유롭게 사용해 보세요.

C3aadaef52a609bf.png

  1. 첫 번째 행을 강조표시합니다.

cfe36fcf833d0bd7.gif

  1. 선택한 영역에 매크로를 적용하려면 확장 프로그램> 매크로> 헤더를 클릭합니다.
  2. 화면에 표시된 안내에 따라 매크로를 승인합니다.
  1. 4단계를 반복하여 매크로를 다시 실행합니다 (승인하면 첫 실행이 중지됨).

축하합니다. Sheets에서 매크로를 적용하는 방법을 배웠습니다. 스프레드시트의 내용은 다음과 비슷해야 합니다.

7c7130a4a697bd92.png

매크로를 사용하면 효율적으로 스프레드시트를 만들 수 있으며, 이 Codelab의 다음 부분에서는 매크로를 더 효율적으로 만드는 방법을 알아보겠습니다. 비결은 다음과 같습니다. 매크로를 기록할 때 실제로 하는 작업은 Apps Script 코드를 작성하는 것입니다. 내부적으로 스프레드시트는 매크로 작업과 일치하는 코드를 구성합니다. 다음 섹션에서는 Apps Script의 브라우저 내 편집기를 사용하여 코드를 직접 수정하는 방법을 알아봅니다.

4. 스크립트 편집기의 매크로

매크로를 만들 때 Google Sheets에서 작업을 Apps Script 함수로 저장합니다. 매크로를 활성화하면 Google Sheets에서 Apps Script 함수를 호출하여 동일한 순서로 작업을 적용합니다.

스크립트 편집기

매크로를 만들었으므로 이제 코드를 확인하세요. 매크로 스크립트를 보려면 확장 프로그램 > Apps Script를 클릭하여 Apps Script용 브라우저 코드 편집기를 엽니다.

스크립트 편집기를 사용하면 Apps Script에서 코드를 작성하고 Google 서버에서 스크립트를 실행할 수 있습니다.

macro.gs 분석

현재 스크립트를 검토합니다. Header 매크로를 기록하면 Sheets에서 macros.gs 스크립트 파일을 만들어 해당하는 Apps Script 함수인 Header로 채웁니다. Header 매크로를 활성화하면 Sheets에서 이 함수가 실행됩니다.

Apps Script의 매크로 함수 구조를 알아보려면 아래 이미지를 확인하세요. 단계를 다른 순서로 기록하거나 녹화하는 동안 스프레드시트를 둘러보는 코드는 코드가 약간 다를 수 있습니다.

5d653a69a0897adf.png

첫 번째 줄은 승인에 영향을 주는 주석 주석입니다.

/** @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() 라벨은 함수의 이름 및 매개변수를 정의합니다. Header()은 Apps Script의 매크로 함수로 입력이 필요하지 않다는 것을 인식합니다. 중괄호는 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를 사용하여 더 많이 코딩할수록 한 클래스에서 여러 메서드를 호출하는 규칙 (메서드 체이닝이라고도 함)에 더 익숙해질 것입니다. 지금은 코드 블록의 각 메서드에 관한 간략한 설명을 아래에서 확인할 수 있습니다.

마지막으로 최종 줄은 매크로의 첫 번째 행을 고정합니다.

spreadsheet.getActiveSheet().setFrozenRows(1);

그리고 매크로를 녹화할 때 생성한 스크립트입니다. 위에 언급된 익숙하지 않은 용어나 방법에 관해 걱정할 필요가 없습니다. 이 설명은 일반적인 스크립트 함수에서 Apps Script가 집중하는 몇 가지 아이디어에 관해 생각하도록 돕기 위한 것으로, 향후 Codelab에서 자세히 설명하는 주제를 다룹니다.

다음 섹션에서는 Header() 함수의 코드를 조작하여 스크립트 편집기를 사용하여 매크로를 추가로 맞춤설정하는 방법을 중점적으로 설명합니다.

Apps Script로 매크로 맞춤설정

Apps Script 편집기에는 이전에 Google Sheets에서 만든 매크로가 표시됩니다. 함수 본문의 내용을 조정하여 매크로의 명령을 추가적으로 맞춤설정하거나 다른 작업을 할 수 있습니다. 다음 연습에서는 스크립트 편집기를 사용하여 매크로를 조작하는 다양한 방법을 보여줍니다.

영향을 받는 셀 변경

전체 행이 아니라 첫 번째 행의 처음 10개 열에만 영향을 미치도록 매크로를 수정하려는 경우 매크로를 삭제하고 다시 기록할 수 있습니다. 하지만 Apps Script 편집기를 사용하여 직접 변경할 수 있습니다. 다음은 한 가지 방법 중 하나입니다.

  1. 스크립트 편집기에서 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);
}
  1. 스크립트를 저장하려면 save 저장을 클릭합니다.
  2. 프로젝트 이름을 변경하려면 새 프로젝트 이름으로 '매크로 및 맞춤 함수'를 입력하고 이름 바꾸기를 클릭합니다.
  3. 시트를 만들려면 Sheets에서 시트 추가 9c9b0c19bf317e7f.png를 클릭합니다.

927c012b4e11475b.png

  1. 스크립트 에디터의 함수 목록에서 Header를 선택하고 실행을 클릭합니다.

새 시트에 다음 결과가 표시됩니다.

8a58ba02535b2b9c.png

활성 또는 타겟 범위를 수정하면 매크로가 첫 번째 행의 일부에만 영향을 미칩니다. 많은 Apps Script 메서드는 범위 또는 A1 표기법을 매개변수로 사용하여 실행할 셀을 지정합니다.

다음으로 매크로 색상 맞춤설정에 대해 알아보겠습니다.

매크로 색상 변경

스프레드시트 스크립트에서 다른 매크로 또는 기타 요소의 색 구성표를 디자인하는 데 도움이 되도록 Apps Script에서 범위 또는 텍스트 색상의 범위를 수정할 수 있습니다. 다음 안내에 따라 매크로의 색상을 맞춤설정하는 방법을 알아보세요.

다음은 매크로의 배경 색상을 변경하는 데 초점을 맞춘 도움말입니다.

  1. Sheets에서 원본 데이터가 포함된 시트 (시트 1)로 다시 전환합니다.
  2. 첫 번째 행을 클릭하여 강조표시합니다.
  3. 스크립트 편집기에서 배경 색상 #4c1130#afeeee로 바꿉니다. 이 값은 16진수 삼중 표기법을 사용하여 다양한 색상을 나타냅니다.
/** @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);
}
  1. 스크립트를 저장하려면 save 저장을 클릭합니다.
  2. 함수 목록에서 Header를 선택하고 Run을 클릭합니다.

Sheets에서는 첫 번째 행의 처음 10개 배경이 채우기에 맞춤 청록색이 됩니다.

bbd26f7c8e35039.png

setBackground(color) 매개변수의 16진수 색상 표기법setBackground(color)#4c1130(진한 자홍색 3)에서 #afeeee(연한 청록색, Sheets에서 사용할 수 없는 옵션, 기본 색상 메뉴)로 전환하면 매크로의 색상 색상 속성이 변경됩니다.

매크로에 설정된 배경 색상을 수정했습니다. 텍스트 색상도 변경하려면 두 번째 색상 코드를 변경하세요.

  1. Sheets에서 첫 번째 행을 클릭하여 계속 강조표시되도록 합니다.
  2. 스크립트 편집기에서 글꼴 색상 #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);
}
  1. 스크립트를 저장하려면 save 저장을 클릭합니다.
  2. 함수 목록에서 Header를 선택하고 Run을 클릭합니다.

스프레드시트로 돌아가 헤더 행의 텍스트 색상이 이제 군청색으로 표시됩니다.

2eaf2fb4879e1b36.png

지금까지 매크로가 Apps Script 코드로 기록되는 스프레드시트 작업이라는 것을 살펴봤습니다. 다음 섹션에서는 Apps Script가 Google 스프레드시트로 작업하는 데 도움이 되는 또 다른 방법인 맞춤 함수를 확인할 수 있습니다.

5. 첫 번째 스크립트 코딩: 맞춤 함수

대부분의 스프레드시트 애플리케이션과 마찬가지로 Google Sheets에는 스프레드시트 데이터를 빠르게 계산할 수 있는 =SUM()과 같은 수식 기능이 내장되어 있습니다. 커스텀 함수는 Apps Script를 사용하여 지정하는 함수입니다. 맞춤 함수를 정의하고 나면 내장 함수처럼 스프레드시트의 모든 위치에서 사용할 수 있습니다.

이 섹션에서는 Apps Script에서 금전적 변환을 수행하는 맞춤 함수를 만드는 방법을 보여줍니다.

스크립트 파일 만들기

매크로 섹션의 동일한 스프레드시트 및 스크립트 프로젝트를 사용하여 다음 안내에 따라 새 스크립트를 만드는 방법을 알아보세요. 이 스크립트를 사용하여 첫 번째 맞춤 함수를 만들 수 있습니다.

  1. Apps Script 파일을 만들려면 스크립트 편집기로 돌아갑니다.
  2. Files 옆의 파일 추가 파일 추가 > Script를 클릭합니다.
  3. 새 스크립트 파일 customFunctions의 이름을 지정하고 Enter 키를 누릅니다. Apps Script는 자동으로 스크립트 파일 이름에 .gs 확장자를 추가합니다.

이름이 customFunctions.gs인 새 탭이 편집기에 표시됩니다.

이제 맞춤 함수용으로 스크립트를 만들었으므로 코드로 채울 수 있습니다.

미국 달러를 스위스 프랑으로 변환

전 세계 총수익을 미국 달러뿐 아니라 스위스 프랑으로 표시하도록 2018년 10대 영화 최고 매출 영화 19,139를 변경하려고 한다고 가정해 보겠습니다. 맞춤 함수를 사용하면 이를 쉽게 할 수 있습니다. 다음 연습에서는 맞춤 함수를 만들어 달러 값을 프랑 값으로 수학적으로 변환하는 방법을 보여줍니다.

첫 번째 커스텀 함수를 작성하려면 먼저 함수가 적절한 출력을 표시하도록 데이터 세트를 수정하세요. 제공받는 방법은 다음과 같습니다.

  1. Sheets에서 H열을 마우스 오른쪽 버튼으로 클릭합니다.
  2. 결과 메뉴에서 오른쪽에 1개 삽입을 클릭합니다.

fc1421cb1c456e52.gif

  1. I1 셀에서 "Worldwide_Total (Swiss francs)" 열에 라벨을 지정합니다.

이제 전환 맞춤 함수의 결과를 저장할 수 있는 열이 생겼습니다. 스크립트 스크립트를 사용하여 첫 번째 맞춤 함수를 만들 수 있습니다.

  1. 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;
}

이 코드는 미국 달러를 스위스 프랑으로 변환하는 코드입니다. 아래 안내에 따라 시트에서 맞춤 함수를 실행하는 방법을 알아보세요.

  1. 스크립트를 저장하려면 save 저장을 클릭합니다.
  2. Sheets에서 I2 셀을 선택합니다.
  3. 함수 모음에 =USDTOCHF(H2)를 입력합니다.

열의 나머지 셀에 수식을 적용하려면 다음 단계를 따르세요.

  1. I2 셀의 오른쪽 하단으로 커서를 이동하고 작은 파란색 상자를 선택합니다. 커서가 파란색 상자를 가리키면 9c9b0c19bf317e7f.png로 변환됩니다.
  2. 파란색 상자를 아래로 드래그하여 I3:I11 범위를 강조표시합니다.

3cf46560d6cea0de.gif

이제 I열에는 H열에 미국 달러 값의 스위스 프랑 전환이 나열되어 있습니다.

7fc06b3d7e3e2a9.png

축하합니다. 첫 번째 맞춤 함수를 만들었습니다. 다음 섹션에서는 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에 맞춤 함수를 자동 완성하도록 알립니다.

D8680ab6efae97ac.gif

자동 완성 팝업에 표시되는 텍스트는 댓글 블록에 입력한 설명 텍스트와 정확히 일치합니다. 설명을 잘 작성하고 완성하면 맞춤 함수를 더 쉽게 사용할 수 있습니다.

다음으로 함수 USDTOCHF()의 코드에 포커스를 둡니다.

function USDTOCHF(dollars){
  var swissFrancs = dollars * .99; 
  return swissFrancs;
}

앞서 언급했듯이 USDTOCHF()는 숫자 변수 달러와 고정된 환율을 곱한 후 숫자 변수 swissFrancs에서 스위스 프랑으로 변환된 값을 반환합니다. 입력 매개변수는 셀에 맞춤 함수를 추가할 때 지정된 셀에 포함된 값입니다. 이 예에서 입력 달러 금액은 H열에서 발생합니다. 출력 값 swissFrancs는 함수의 셀 (이 예에서는 I열)에 배치됩니다.

맞춤 함수는 다음 섹션에서 볼 수 있듯이 숫자 또는 문자열 값으로 작동할 수 있습니다.

문자열 프리픽스 연결

USDTOCHF() 함수의 숫자 출력에 스위스 프랑 프리픽스 CHF를 포함한다고 가정해 보겠습니다. 다음 안내와 같이 연결 연산자 (+),를 사용하여 Apps Script로 이 작업을 수행할 수 있습니다.

  1. 스크립트 편집기에서 숫자 대신 문자열을 반환하도록 @return 주석을 업데이트합니다.
  2. return swissFrancsreturn 'CHF' + swissFrancs로 변경합니다.

+ 연산자는 CHF에 포함된 값을 swissFrancs 앞에 추가합니다. 이제 코드가 다음과 같이 표시됩니다.

/**
 * 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;
}
  1. 스크립트를 저장하려면 save 저장을 클릭합니다.

이제 스위스 프랑 문자열을 통해 I열의 값에 접두어를 추가합니다.

20e4bfb7f0a994ea.png

이제 맞춤 함수가 미국 달러를 스위스 프랑으로 변환할 뿐만 아니라 문자열 프리픽스로 통화를 출력합니다.

고급: 외부 데이터 가져오기

기본 맞춤 함수로는 좋은 시작이지만 이 예에서는 스위스 프랑의 환율이 일정하다고 가정합니다. 대신 현재 환율을 사용하려고 하므로 시트가 새로고침될 때마다 현재 전환을 나타내는 값이 다시 계산되어야 하나요? 이렇게 하려면 현재 환율을 파악할 방법이 필요합니다. 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를 사용하여 금융 정보 서버에서 현재 환율을 가져옵니다. UrlFetchAppCacheService 같은 Apps Script 서비스를 사용하면 됩니다. 이러한 고급 개념은 이 특정 Codelab에서 다루지 않지만, Apps Sheets에서 다기능성을 확인하여 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 Sheets 서비스의 핵심 클래스와 용어를 보여줍니다. 이 서비스를 사용하면 Apps Script를 사용하여 Google Sheets에서 데이터의 값과 표현을 세밀하게 제어할 수 있습니다.

스프레드시트, 스프레드시트, 범위에서 다음 Codelab을 찾습니다.