이 문서에서는 spreadsheets.values 리소스 사용의 기본사항을 설명합니다.
스프레드시트는 여러 시트를 포함할 수 있으며 각 시트에는 원하는 수의 행이나 열이 있을 수 있습니다. 셀은 특정 행과 열의 교차점에 있는 위치이며 데이터 값을 포함할 수 있습니다. Google Sheets API는 값을 읽고 쓸 수 있도록 spreadsheets.values 리소스를 제공합니다.
시트에서 행을 삽입하거나 서식 및 기타 속성을 업데이트해야 하는 경우 스프레드시트 업데이트에 설명된 대로 spreadsheets 리소스의 batchUpdate 메서드를 사용해야 합니다.
리소스 메서드
spreadsheets.values 리소스는 특정 작업별로 값을 읽고 쓰는 다음 메서드를 제공합니다.
| 범위 액세스 | 읽기 | 쓰기 |
|---|---|---|
| 단일 범위 | spreadsheets.values.get |
spreadsheets.values.update |
| 여러 범위 | spreadsheets.values.batchGet |
spreadsheets.values.batchUpdate |
| 추가 | spreadsheets.values.append |
일반적으로 효율성을 높이기 위해 batchGet 및 batchUpdate 메서드 (각각)를 사용하여 여러 읽기 또는 업데이트를 결합하는 것이 좋습니다.
기본 읽기 및 기본 쓰기 샘플 페이지에서 이러한 각 메서드의 코드 샘플을 확인할 수 있습니다. 모든 코드 샘플을 확인하려면 샘플 개요 페이지를 참고하세요.
셀 값 읽기
시트에서 데이터 값을 읽으려면 스프레드시트 ID와 범위의 A1 표기법이 필요합니다. 시트 ID (A1:B2) 없이 범위를 지정하면 스프레드시트의 첫 번째 시트에서 요청이 실행됩니다. 스프레드시트 ID 및 A1 표기법에 대한 자세한 내용은 Google Sheets API 개요를 참고하세요.
여러 선택적 쿼리 매개변수가 출력 형식을 제어합니다.
| 형식 매개변수 | 기본값 |
|---|---|
majorDimension |
행 |
valueRenderOption |
FORMATTED_VALUE |
dateTimeRenderOption |
SERIAL_NUMBER |
valueRenderOption이 FORMATTED_VALUE이 아닌 경우에만 dateTimeRenderOption을 사용해야 합니다.
반환되는 데이터 양에 대한 명시적인 제한은 없습니다. 오류가 발생하면 데이터가 반환되지 않습니다. 비어 있는 후행 행과 열은 생략됩니다.
단일 및 일괄 가져오기 메서드는 다음 섹션에 설명되어 있습니다. 기본 읽기 작업의 코드 샘플을 더 보려면 기본 읽기를 참고하세요.
단일 범위에서 값 읽기
스프레드시트에서 단일 값 범위를 읽으려면 spreadsheets.values.get 요청을 사용합니다.
Apps Script
자바
자바스크립트
Node.js
PHP
Python
Ruby
이 요청에 대한 응답은 spreadsheets.values 리소스의 일부인 ValueRange 객체로 반환됩니다.
여러 범위에서 값 읽기
스프레드시트에서 여러 개의 불규칙한 값 범위를 읽으려면 검색할 여러 범위를 지정할 수 있는 spreadsheets.values.batchGet 요청을 사용하세요.
Apps Script
자바
자바스크립트
Node.js
PHP
Python
Ruby
이 요청에 대한 응답은 spreadsheetId 및 ValueRange 객체 목록이 포함된 BatchGetValuesResponse 객체로 반환됩니다.
셀 값 쓰기
시트에 쓰려면 스프레드시트 ID, A1 표기법의 셀 범위, 적절한 요청 본문 객체 내에 쓰려는 데이터가 필요합니다. 스프레드시트 ID 및 A1 표기법에 대한 자세한 내용은 Google Sheets API 개요를 참고하세요.
여러 쿼리 매개변수가 데이터가 작성되는 방식과 응답이 형식화되는 방식을 제어합니다.
| 쓰기 매개변수 | 기본값 |
|---|---|
valueInputOption |
(필수) |
includeValuesInResponse |
false |
responseValueRenderOption |
FORMATTED_VALUE |
responseDateTimeRenderOption |
SERIAL_NUMBER |
필수 valueInputOption 매개변수는 입력 데이터를 해석하는 방법을 제어합니다. (일괄 업데이트의 경우 이 매개변수는 요청 본문에 대신 지정됩니다.) 지원되는 옵션은 다음 표에 설명되어 있습니다.
ValueInputOption |
설명 |
|---|---|
RAW |
입력이 파싱되지 않고 문자열로 삽입됩니다. 예를 들어 '=1+2'를 입력하면 수식이 아닌 문자열 '=1+2'가 셀에 배치됩니다. (불리언이나 숫자와 같은 문자열이 아닌 값은 항상 RAW로 처리됩니다.) |
USER_ENTERED |
입력은 Sheets UI에 입력된 것처럼 정확하게 파싱됩니다. 예를 들어 '2016년 3월 1일'은 날짜가 되고 '=1+2'는 수식이 됩니다. 형식을 추론할 수도 있으므로 '$100.15'는 통화 형식이 지정된 숫자가 됩니다. |
responseValueRenderOption이 FORMATTED_VALUE이 아닌 경우에만 responseDateTimeRenderOption을 사용해야 합니다.
단일 및 일괄 업데이트 메서드는 다음 섹션에 설명되어 있습니다. 기본 쓰기 작업의 코드 샘플은 기본 쓰기를 참고하세요.
단일 범위에 값 쓰기
단일 범위에 데이터를 쓰려면 spreadsheets.values.update 요청을 사용합니다.
Apps Script
자바
자바스크립트
Node.js
PHP
Python
Ruby
업데이트 요청의 본문은 ValueRange 객체여야 하지만 필수 필드는 values뿐입니다. range이 지정된 경우 URL의 범위와 일치해야 합니다. ValueRange에서 선택적으로 majorDimension를 지정할 수 있습니다.
기본적으로 ROWS이 사용됩니다. COLUMNS가 지정되면 각 내부 배열이 행 대신 열에 작성됩니다.
업데이트 시 데이터가 없는 값은 건너뜁니다. 데이터를 지우려면 빈 문자열 ('')을 사용합니다. spreadsheets.values.batchClear 메서드를 사용하여 값을 바꾸지 않고 여러 범위에서 값을 지울 수도 있습니다.
개발자 메타데이터를 사용하는 경우 spreadsheets.values.batchGetByDataFilter, spreadsheets.values.batchUpdateByDataFilter, spreadsheets.values.batchClearByDataFilter 메서드를 사용하여 값을 읽거나 업데이트하거나 지우는 데이터 필터 사용에 관한 정보는 개발자 메타데이터 가이드를 참고하세요.
여러 범위에 값 쓰기
연속되지 않은 범위를 여러 개 작성하려면 spreadsheets.values.batchUpdate 요청을 사용하면 됩니다.
Apps Script
자바
자바스크립트
Node.js
PHP
Python
Ruby
일괄 업데이트 요청의 본문은 ValueInputOption와 ValueRange 객체 목록 (쓰기 범위별로 하나씩)이 포함된 BatchUpdateValuesRequest 객체여야 합니다. 각 ValueRange 객체는 자체 range, majorDimension, 입력 데이터를 지정합니다.
값 추가
시트의 데이터 테이블 뒤에 데이터를 추가하려면 spreadsheets.values.append 요청을 사용하세요.
Apps Script
자바
자바스크립트
Node.js
PHP
Python
Ruby
업데이트 요청의 본문은 ValueRange 객체여야 하지만 필수 필드는 values뿐입니다. range이 지정된 경우 URL의 범위와 일치해야 합니다. ValueRange에서 선택적으로 majorDimension를 지정할 수 있습니다.
기본적으로 ROWS이 사용됩니다. COLUMNS가 지정되면 각 내부 배열이 행 대신 열에 작성됩니다.
입력 범위는 기존 데이터를 검색하고 해당 범위 내에서 '표'를 찾는 데 사용됩니다. 값이 테이블의 첫 번째 열부터 테이블의 다음 행에 추가됩니다. 예를 들어 다음과 같은 Sheet1을 생각해 보세요.
| A | B | C | D | E | |
| 1 | x | y | z | ||
| 2 | x | y | z | ||
| 3 | |||||
| 4 | x | y | |||
| 5 | y | z | |||
| 6 | x | y | z | ||
| 7 |
시트에는 A1:C2와 B4:D6의 두 테이블이 있습니다. 다음 range 입력의 경우 추가된 값은 모두 B7에서 시작됩니다.
Sheet1는 시트의 모든 데이터를 검사하고B4:D6의 테이블이 마지막 테이블이라고 판단하기 때문입니다.B4또는C5:D5가B4:D6테이블에 모두 있기 때문입니다.B2:D4범위의 마지막 테이블이B4:D6테이블이기 때문입니다 (A1:C2테이블도 포함되어 있음 에도 불구하고).A3:G10입니다. 범위의 마지막 테이블이B4:D6테이블이기 때문입니다 (테이블보다 먼저 시작하고 나중에 종료됨에도 불구하고).
다음 range 입력은 B7에서 쓰기를 시작하지 않습니다.
A1은A3에서 쓰기를 시작합니다. 이A1:C2테이블에 있기 때문입니다.E4는 테이블에 없으므로E4에서 쓰기를 시작합니다. (A4도 동일한 이유로A4에서 쓰기를 시작합니다.)
또한 테이블을 덮어쓸지 아니면 새 데이터에 대한 새 행을 삽입할지 선택할 수 있습니다. 기본적으로 입력은 테이블 뒤의 데이터를 덮어씁니다. 새 행에 새 데이터를 쓰려면 InsertDataOption를 사용하고 insertDataOption=INSERT_ROWS를 지정합니다.
Sheets의 셀 및 행 한도에 관해 자세히 알아보려면 Google Drive에 저장할 수 있는 파일을 참고하세요.