데이터 작업

Google Sheets API를 사용하면 스프레드시트 내의 데이터를 다양한 방법으로 조작할 수 있습니다. Sheets UI를 사용하는 사용자가 사용할 수 있는 대부분의 기능은 Sheets API로도 사용할 수 있습니다. 이 페이지의 예에서는 Sheets API로 몇 가지 일반적인 스프레드시트 작업을 수행하는 방법을 보여줍니다.

이러한 예는 언어 중립적인 HTTP 요청의 형식으로 제공됩니다. Google API 클라이언트 라이브러리를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법은 스프레드시트 업데이트를 참고하세요.

이 예에서 자리표시자 SPREADSHEET_IDSHEET_ID는 이러한 ID를 제공하는 위치를 나타냅니다. 스프레드시트 URL에서 스프레드시트 ID를 확인할 수 있습니다. spreadsheets.get 메서드를 사용하여 시트 ID를 가져올 수 있습니다. 범위는 A1 표기법을 사용하여 지정됩니다. 범위의 예로는 Sheet1!A1:D5가 있습니다.

범위에 데이터 확인 적용

다음 spreadsheets.batchUpdate 코드 샘플은 SetDataValidationRequest를 사용하여 A1:D10 범위의 모든 셀에 '값 > 5'인 데이터 검증 규칙을 적용하는 방법을 보여줍니다.

요청 프로토콜은 아래와 같습니다.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "setDataValidation": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 4
        },
        "rule": {
          "condition": {
            "type": "NUMBER_GREATER",
            "values": [
              {
                "userEnteredValue": "5"
              }
            ]
          },
          "inputMessage": "Value must be > 5",
          "strict": true
        }
      }
    }
  ]
}

셀 서식 복사 및 붙여넣기

다음 spreadsheets.batchUpdate 코드 샘플은 CopyPasteRequest를 사용하여 A1:D10 범위의 서식만 복사하여 같은 시트의 F1:I10 범위에 붙여넣는 방법을 보여줍니다. 이 메서드는 PASTE_FORMAT와 함께 PasteType enum을 사용하여 형식 지정 및 데이터 유효성 검사만 붙여넣습니다. A1:D10의 원래 값은 변경되지 않습니다.

요청 프로토콜은 아래와 같습니다.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "copyPaste": {
        "source": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 4
        },
        "destination": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 5,
          "endColumnIndex": 9
        },
        "pasteType": "PASTE_FORMAT",
        "pasteOrientation": "NORMAL"
      }
    }
  ]
}

셀 잘라내기 및 붙여넣기

다음 spreadsheets.batchUpdate 코드 샘플은 CutPasteRequest를 사용하는 방법을 보여줍니다. A1:D10 범위를 잘라내고 PASTE_NORMAL와 함께 PasteType enum을 사용하여 값, 수식, 서식 지정, 병합을 동일한 시트의 F1:I10 범위에 붙여넣습니다. 원본 소스 범위 셀 내용은 삭제됩니다.

요청 프로토콜은 아래와 같습니다.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "cutPaste": {
        "source": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 4
        },
        "destination": {
          "sheetId": SHEET_ID,
          "rowIndex": 0,
          "columnIndex": 5
        },
        "pasteType": "PASTE_NORMAL"
      }
    }
  ]
}

범위에 대해 수식 반복

다음 spreadsheets.batchUpdate 코드 샘플은 RepeatCellRequest를 사용하여 =FLOOR(A1*PI()) 수식을 B1:D10 범위에 복사하는 방법을 보여줍니다. 왼쪽 상단 셀부터 공식의 범위가 범위의 각 행과 열에 대해 자동으로 증가합니다. 예를 들어 B1 셀에는 =FLOOR(A1*PI()) 수식이 있지만 D6 셀에는 =FLOOR(C6*PI()) 수식이 있습니다.

요청 프로토콜은 아래와 같습니다.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "repeatCell": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 1,
          "endColumnIndex": 4
        },
        "cell": {
          "userEnteredValue": {
              "formulaValue": "=FLOOR(A1*PI())"
          }
        },
        "fields": "userEnteredValue"
      }
    }
  ]
}

여러 정렬 사양으로 범위 정렬

다음 spreadsheets.batchUpdate 코드 샘플은 SortRangeRequest를 사용하여 범위 A1:D10을 오름차순으로 B열을 오름차순으로, C열을 내림차순으로 정렬한 다음 D열을 내림차순으로 정렬하는 방법을 보여줍니다.

요청 프로토콜은 아래와 같습니다.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "sortRange": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 4
        },
        "sortSpecs": [
          {
            "dimensionIndex": 1,
            "sortOrder": "ASCENDING"
          },
          {
            "dimensionIndex": 2,
            "sortOrder": "DESCENDING"
          },
          {
            "dimensionIndex": 3,
            "sortOrder": "DESCENDING"
          }
        ]
      }
    }
  ]
}