Google Apps Script를 사용하여 Sheets를 확장합니다. Sheets에 맞춤 메뉴, 대화상자, 사이드바를 추가합니다. Sheets용 맞춤 함수를 작성하고 Google 서비스인 Google 캘린더, Google Drive, Gmail과 같은 다른 서비스와 통합합니다.
Sheets용으로 설계된 대부분의 스크립트는 배열을 조작하여 스프레드시트의 셀, 행, 열과 상호작용합니다. JavaScript의 배열에 익숙하지 않다면 Codecademy에서 배열에 관한 훌륭한 학습 모듈을 제공합니다. 이 과정은 Google에서 개발하지 않았으며 Google과 관련이 없습니다.
Sheets에서 Apps Script를 사용하는 방법을 간단히 알아보려면 매크로, 메뉴, 맞춤 함수 5분 빠른 시작 가이드를 참고하세요.
시작하기
Apps Script에는 Sheets를 프로그래매틱 방식으로 만들고, 읽고, 수정하는 특수 API가 포함되어 있습니다. Apps Script는 두 가지 방법으로 Sheets와 상호작용합니다. 스크립트의 사용자에게 스프레드시트에 대한 적절한 권한이 있는 경우 모든 스크립트가 스프레드시트를 만들거나 수정할 수 있으며 스크립트를 스프레드시트에 바인딩할 수도 있습니다. 바인딩된 스크립트는 사용자 인터페이스를 변경하거나 스프레드시트가 열릴 때 응답하는 특별한 기능을 제공합니다. 바인딩된 스크립트를 만들려면 Sheets 내에서 확장 프로그램 > Apps Script 를 선택합니다.
Spreadsheet 서비스는 Sheets 를 2차원 배열로 작동하는 그리드로 취급합니다. 스프레드시트에서 데이터를 가져오려면 데이터가 저장된 스프레드시트에 액세스하고, 데이터를 포함하는 범위를 가져온 후 셀의 값을 가져옵니다. Apps Script는 스프레드시트에서 구조화된 데이터를 읽고 이에 대한 JavaScript 객체를 만들어 데이터 액세스를 용이하게 합니다.
데이터 읽기
다음 이미지와 같이 스프레드시트에 저장된 제품 이름 및 제품 번호 목록이 있다고 가정해 보겠습니다.

다음 예에서는 제품 이름과 제품 번호를 가져와 로깅하는 방법을 보여줍니다.
function logProductInfo() {
const sheet = SpreadsheetApp.getActiveSheet();
const data = sheet.getDataRange().getValues();
for (let i = 0; i < data.length; i++) {
Logger.log('Product name: ' + data[i][0]);
Logger.log('Product number: ' + data[i][1]);
}
}
로그 보기
로깅된 데이터를 보려면 스크립트 편집기 상단에서 실행 로그 를 클릭합니다.
데이터 쓰기
새 제품 이름 및 번호와 같은 데이터를 스프레드시트에 저장하려면 다음 코드를 스크립트 끝에 추가합니다.
function addProduct() {
const sheet = SpreadsheetApp.getActiveSheet();
sheet.appendRow(['Cotton Sweatshirt XL', 'css004']);
}
앞의 코드는 지정된 값으로 스프레드시트 하단에 새 행을 추가합니다. 이 함수를 실행하면 스프레드시트에 새 행이 추가됩니다.
맞춤 메뉴 및 사용자 인터페이스
맞춤 메뉴, 대화상자, 사이드바를 추가하여 Sheets를 맞춤설정합니다. 메뉴 만들기의 기본사항을 알아보려면 메뉴 가이드를 참고하세요. 대화상자의 콘텐츠를 맞춤설정하는 방법을 알아보려면 HTML 서비스 가이드를 참고하세요.
스크립트 함수를 스프레드시트 내의 이미지 또는 그림에 연결합니다. 사용자가 이미지 또는 그림을 클릭하면 함수가 실행됩니다. 자세한 내용은 Sheets의 이미지 및 그림을 참고하세요.
맞춤 인터페이스를 부가기능의 일부로 게시하려는 경우 Sheets 편집기의 스타일 및 레이아웃과 일관성을 유지하기 위해 스타일 가이드를 따르세요.
Google Forms에 연결
Forms 및
Forms and
Spreadsheet 서비스를 통해 Google Forms를 Sheets에 연결합니다. 이 기능은 스프레드시트의 데이터를 기반으로 Google Forms를 자동으로 만듭니다.
Apps Script를 사용하면 사용자가 양식에 응답한 후 특정 작업을 실행하는 트리거를 사용할 수도 있습니다.onFormSubmit Sheets를 Forms에 연결하는 방법을 자세히 알아보려면
Forms 응답 관리 5분
빠른 시작을 사용해 보세요.
데이터 서식 지정
Range 클래스에는
setBackground
와 같은 메서드가 있어 셀 또는 셀 범위의 형식에 액세스하고 수정할 수 있습니다. 다음 예에서는 범위의 글꼴 스타일을 설정합니다.
function formatMySpreadsheet() {
// Set the font style of the cells in the range of B2:C2 to be italic.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheets()[0];
const cell = sheet.getRange('B2:C2');
cell.setFontStyle('italic');
}
데이터 검증
Sheets에서 기존 데이터 검증 규칙에 액세스하거나 새 규칙을 만듭니다. 예를 들어 다음 샘플에서는 셀에서 1~100 사이의 숫자만 허용하는 데이터 검증 규칙을 설정하는 방법을 보여줍니다.
function validateMySpreadsheet() {
// Set a rule for the cell B4 to be a number between 1 and 100.
const cell = SpreadsheetApp.getActive().getRange('B4');
const rule = SpreadsheetApp.newDataValidation()
.requireNumberBetween(1, 100)
.setAllowInvalid(false)
.setHelpText('Number must be between 1 and 100.')
.build();
cell.setDataValidation(rule);
}
데이터 검증 규칙 작업에 관한 자세한 내용은
SpreadsheetApp.newDataValidation,
DataValidationBuilder,
및 Range.setDataValidation을 참고하세요.
차트
특정 범위의 데이터를 나타내는 차트를 스프레드시트에 삽입합니다. 다음 예에서는 셀 A1:B15에 차트 작성 가능한 데이터가 있다고 가정하고 삽입된 막대 그래프를 생성합니다.
function newChart() {
// Generate a chart representing the data in the range of A1:B15.
const ss = SpreadsheetApp.getActiveSpreadsheet();
const sheet = ss.getSheets()[0];
const chart = sheet.newChart()
.setChartType(Charts.ChartType.BAR)
.addRange(sheet.getRange('A1:B15'))
.setPosition(5, 5, 0, 0)
.build();
sheet.insertChart(chart);
}
스프레드시트에 차트를 삽입하는 방법을 자세히 알아보려면
EmbeddedChart 및 특정 차트
작성기(예:
EmbeddedPieChartBuilder)를 참고하세요.
Google Sheets의 맞춤 함수
맞춤 함수는 기본 제공 스프레드시트
함수와 비슷하지만 함수 동작을
Apps Script로 정의한다는 점이 다릅니다.=SUM(A1:A5) 예를 들어 값을 인치에서 밀리미터로 변환하는 맞춤 함수 in2mm()를 만든 다음 셀에 =in2mm(A1) 또는 =in2mm(10)을 입력하여 스프레드시트에서 수식을 사용할 수 있습니다.
맞춤 함수에 대해 자세히 알아보려면 메뉴 및 맞춤 함수 5분 빠른 시작을 사용해 보거나 맞춤 함수에 관한 자세한 가이드를 참고하세요.
매크로
매크로는 Sheets UI에서 Apps Script 코드를 실행하는 또 다른 방법입니다. 맞춤 함수와 달리 단축키 또는 Sheets 메뉴를 통해 활성화합니다. 자세한 내용은 Sheets 매크로를 참고하세요.
Google Sheets용 부가기능
부가기능은 Sheets 내에서 실행되며 Sheets 부가기능 스토어에서 설치할 수 있는 특별히 패키징된 Apps Script 프로젝트입니다. Sheets용 스크립트를 개발하고 공유하려는 경우 Apps Script를 사용하면 다른 사용자가 설치할 수 있도록 스크립트를 부가기능으로게시할 수 있습니다.
성능 및 확장
데이터 세트가 증가함에 따라 성능 문제가 발생할 수 있습니다. 스프레드시트와 스크립트를 최적화하려면 다음 단계를 따르세요.
- 권장사항 따르기: 서비스 호출을 최소화하고 일괄 작업을 사용하는 방법에 관한 도움말은 권장사항 가이드 를 참고하세요.
- 수식 최적화: 복잡한 수식
(예:
VLOOKUP,ARRAYFORMULA,IMPORTRANGE)으로 인해 스프레드시트가 지연되는 경우 Apps Script를 사용하여 이러한 계산을 메모리에서 실행하고 결과를 일괄적으로 다시 쓰는 것이 좋습니다. - 데이터베이스 대안 고려: 매우 큰 데이터 세트 (1,000만 셀에 가까운) 또는 고빈도 데이터 입력 (예: 연결된 양식)의 경우 JDBC를 사용하여 Google Cloud SQL 또는 BigQuery를 사용하는 것이 좋습니다.
트리거
Sheets 파일에 바인딩된 스크립트는 간단한 트리거를 사용하여 스프레드시트에 대한 수정 액세스 권한이 있는 사용자가 스프레드시트를 열거나 수정할 때 자동으로 응답할 수 있습니다.onOpen()onEdit()
간단한 트리거와 마찬가지로 설치 가능한 트리거를 사용하면
Sheets에서 함수를 자동으로 실행할 수 있습니다.
하지만 설치 가능한 트리거는 간단한 트리거보다 유연성이 뛰어나며 열기, 수정, 변경, 양식 제출, 시간 기반(시계) 이벤트를 지원합니다.