기본 서식

Google Sheets API를 사용하면 스프레드시트 내에서 셀 및 범위의 서식을 업데이트할 수 있습니다. 이 페이지의 예시는 Sheets API로 수행할 수 있는 일반적인 서식 지정 작업을 보여줍니다. 조건부 서식 지정 레시피 페이지에서 더 많은 조건부 서식 예를 확인할 수 있습니다.

스프레드시트를 업데이트할 때 일부 유형의 요청에서 응답을 반환할 수도 있습니다. 이는 배열로 반환되며 각 응답은 해당 요청과 동일한 색인을 사용합니다. 일부 요청에는 응답이 없으며 이러한 요청의 경우 응답이 비어 있습니다. 이러한 예의 응답 구조는 spreadsheets.batchUpdate에 있습니다.

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

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

위의 동영상에서는 고정된 행 만들기, 셀 굵게 만들기, 통화 서식 지정 구현, 셀 유효성 검사 수행, 셀 값 제한 등 다양한 방법으로 스프레드시트 셀 서식을 지정하는 방법을 알아봅니다.

셀 테두리 수정

다음 spreadsheets.batchUpdate 코드 샘플은 UpdateBordersRequest를 사용하여 A1:F10 범위의 각 셀에 파란 파란색 위쪽 및 아래쪽 테두리를 지정하는 방법을 보여줍니다. innerHorizontal 필드는 범위 내부에 가로 테두리를 만듭니다. 필드를 생략하면 전체 범위의 상단과 하단에만 테두리가 추가됩니다.

각 셀이 파란색 위쪽 및 아래쪽 테두리가 있는 3x3 표입니다.
그림 1. 시트에서 각 셀의 서식을 파란색 파선의 위쪽 및 아래쪽 테두리로 지정합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateBorders": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 6
        },
        "top": {
          "style": "DASHED",
          "width": 1,
          "color": {
            "blue": 1.0
          },
        },
        "bottom": {
          "style": "DASHED",
          "width": 1,
          "color": {
            "blue": 1.0
          },
        },
        "innerHorizontal": {
          "style": "DASHED",
          "width": 1,
          "color": {
            "blue": 1.0
          },
        },
      }
    }
  ]
}

헤더 행 서식 지정

다음 spreadsheets.batchUpdate 코드 샘플은 RepeatCellRequest를 사용하여 시트에서 헤더 행의 형식을 지정하는 방법을 보여줍니다. 첫 번째 요청은 텍스트 색상, 배경 색상, 텍스트 글꼴 크기, 텍스트 정렬을 업데이트하고 텍스트를 굵게 만듭니다. range 필드에서 열 색인을 생략하면 전체 행의 형식이 지정됩니다. 두 번째 요청은 헤더 행이 고정되도록 시트 속성을 조정합니다.

시트에 형식이 지정된 헤더 행이 있는 3x3 표
그림 2. 시트에서 헤더 행의 서식을 지정합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "repeatCell": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 1
        },
        "cell": {
          "userEnteredFormat": {
            "backgroundColor": {
              "red": 0.0,
              "green": 0.0,
              "blue": 0.0
            },
            "horizontalAlignment" : "CENTER",
            "textFormat": {
              "foregroundColor": {
                "red": 1.0,
                "green": 1.0,
                "blue": 1.0
              },
              "fontSize": 12,
              "bold": true
            }
          }
        },
        "fields": "userEnteredFormat(backgroundColor,textFormat,horizontalAlignment)"
      }
    },
    {
      "updateSheetProperties": {
        "properties": {
          "sheetId": SHEET_ID,
          "gridProperties": {
            "frozenRowCount": 1
          }
        },
        "fields": "gridProperties.frozenRowCount"
      }
    }
  ]
}

셀 병합

다음 spreadsheets.batchUpdate 코드 샘플은 MergeCellsRequest를 사용하여 셀을 병합하는 방법을 보여줍니다. 첫 번째 요청은 A1:B2 범위를 단일 셀로 병합합니다. 두 번째 요청은 A3:B6의 열을 병합하고 행은 그대로 둡니다.

시트에 병합된 셀이 있는 3x3 표입니다.
그림 3. 시트에서 셀을 병합합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "mergeCells": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 2,
          "startColumnIndex": 0,
          "endColumnIndex": 2
        },
        "mergeType": "MERGE_ALL"
      }
    },
    {
      "mergeCells": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 2,
          "endRowIndex": 6,
          "startColumnIndex": 0,
          "endColumnIndex": 2
        },
        "mergeType": "MERGE_COLUMNS"
      }
    },
  ]
}

범위의 커스텀 날짜/시간 또는 십진수 형식 설정

다음 spreadsheets.batchUpdate 코드 샘플은 RepeatCellRequest를 사용하여 맞춤 날짜/시간 및 숫자 형식을 갖도록 셀을 업데이트하는 방법을 보여줍니다. 첫 번째 요청은 A1:A10 범위의 셀에 커스텀 날짜/시간 형식 hh:mm:ss am/pm, ddd mmm dd yyyy를 제공합니다. 이 형식의 날짜/시간 예시는 '02:05:07 PM, Sun Apr 03 2016'입니다.

두 번째 요청은 B1:B10의 셀에 커스텀 숫자 형식 #,##0.0000를 지정합니다. 이 맞춤 숫자 형식은 숫자를 쉼표 구분 기호로 그룹화하고, 소수점 다음에 4자리가 있어야 하며, 선행 0을 하나 제외한 나머지는 모두 삭제해야 함을 나타냅니다. 예를 들어 숫자 '3.14'는 '3.1400'으로 렌더링되고 '12345.12345'는 '12,345.1235'로 렌더링됩니다.

시트에 맞춤 날짜/시간 및 숫자 형식이 있는 3x3 테이블
그림 4. 시트에서 맞춤 날짜/시간 및 숫자 형식을 갖도록 셀을 업데이트합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "repeatCell": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 0,
          "endColumnIndex": 1
        },
        "cell": {
          "userEnteredFormat": {
            "numberFormat": {
              "type": "DATE",
              "pattern": "hh:mm:ss am/pm, ddd mmm dd yyyy"
            }
          }
        },
        "fields": "userEnteredFormat.numberFormat"
      }
    },
    {
      "repeatCell": {
        "range": {
          "sheetId": SHEET_ID,
          "startRowIndex": 0,
          "endRowIndex": 10,
          "startColumnIndex": 1,
          "endColumnIndex": 2
        },
        "cell": {
          "userEnteredFormat": {
            "numberFormat": {
              "type": "NUMBER",
              "pattern": "#,##0.0000"
            }
          }
        },
        "fields": "userEnteredFormat.numberFormat"
      }
    }
  ]
}