데이터 작업

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

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

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

범위에 데이터 검증 적용

다음 spreadsheets.batchUpdate 코드 샘플은 SetDataValidationRequest 를 사용하여 범위 A1:D10의 모든 셀에 데이터 검증 규칙('value > 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에 붙여넣는 방법을 보여줍니다. 이 메서드는 PasteType enum 과 PASTE_FORMAT을 사용하여 서식 및 데이터 검증만 붙여넣습니다. 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을 잘라내고 PasteType enum 과 PASTE_NORMAL을 사용하여 값, 수식, 서식, 병합을 동일한 시트의 범위 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"
          }
        ]
      }
    }
  ]
}