조건부 형식 지정

Google Sheets API를 사용하면 스프레드시트에서 조건부 서식 규칙을 만들고 업데이트할 수 있습니다. 조건부 서식을 통해서는 특정한 서식 유형만 (굵게, 기울임꼴, 취소선, 전경색, 배경색) 제어할 수 있습니다. 이 페이지의 예시는 Sheets API로 일반적인 조건부 서식 작업을 수행하는 방법을 보여줍니다.

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

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

한 행에 조건부 색상 그라데이션 추가

다음 spreadsheets.batchUpdate 메서드 코드 샘플은 AddConditionalFormatRuleRequest를 사용하여 시트의 행 10과 11에 새로운 그라데이션 조건부 서식 규칙을 설정하는 방법을 보여줍니다. 첫 번째 규칙은 셀 값에 따라 해당 행의 셀의 배경색을 지정하도록 선언합니다. 행에서 최저 값은 짙은 빨간색이고 가장 높은 값은 밝은 녹색입니다. 다른 값의 색상은 보간됩니다. 두 번째 규칙은 동일하지만 그라데이션 엔드포인트와 다른 색상을 판별하는 특정 숫자 값이 있습니다. 요청은 sheets.InterpolationPointTypetype로 사용합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addConditionalFormatRule": {
        "rule": {
          "ranges": [
            {
              "sheetId": SHEET_ID,
              "startRowIndex": 9,
              "endRowIndex": 10,
            }
          ],
          "gradientRule": {
            "minpoint": {
              "color": {
                "green": 0.2,
                "red": 0.8
              },
              "type": "MIN"
            },
            "maxpoint": {
              "color": {
                "green": 0.9
              },
              "type": "MAX"
            },
          }
        },
        "index": 0
      }
    },
    {
      "addConditionalFormatRule": {
        "rule": {
          "ranges": [
            {
              "sheetId": SHEET_ID,
              "startRowIndex": 10,
              "endRowIndex": 11,
            }
          ],
          "gradientRule": {
            "minpoint": {
              "color": {
                "green": 0.8,
                "red": 0.8
              },
              "type": "NUMBER",
              "value": "0"
            },
            "maxpoint": {
              "color": {
                "blue": 0.9,
                "green": 0.5,
                "red": 0.5
              },
              "type": "NUMBER",
              "value": "256"
            },
          }
        },
        "index": 1
      }
    },
  ]
}

요청 후 적용된 서식 규칙이 시트를 업데이트합니다. 행 11의 그라데이션은 maxpoint가 256로 설정되어 있기 때문에, 그 이상의 모든 값은 maxpoint 색상을 가집니다.

그라데이션 서식 추가 레시피 결과

조건부 서식 규칙을 범위 세트에 추가

다음 spreadsheets.batchUpdate 메서드 코드 샘플은 AddConditionalFormatRuleRequest를 사용하여 시트의 열 A 및 열 C에 대해 새 조건부 서식 규칙을 설정하는 방법을 보여줍니다. 이 규칙은 값이 10 이하인 셀은 배경색을 짙은 빨간색으로 변경하도록 선언합니다. 이 규칙은 인덱스 0에 삽입되므로 다른 서식 규칙보다 우선합니다. 이 요청은 BooleanRuletypeConditionType를 사용합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addConditionalFormatRule": {
        "rule": {
          "ranges": [
            {
              "sheetId": SHEET_ID,
              "startColumnIndex": 0,
              "endColumnIndex": 1,
            },
            {
              "sheetId": SHEET_ID,
              "startColumnIndex": 2,
              "endColumnIndex": 3,
            },
          ],
          "booleanRule": {
            "condition": {
              "type": "NUMBER_LESS_THAN_EQ",
              "values": [
                {
                  "userEnteredValue": "10"
                }
              ]
            },
            "format": {
              "backgroundColor": {
                "green": 0.2,
                "red": 0.8,
              }
            }
          }
        },
        "index": 0
      }
    }
  ]
}

요청 후 적용된 서식 규칙이 시트를 업데이트합니다.

조건부 서식 레시피 결과 추가

날짜 및 텍스트 조건부 서식 규칙을 범위에 추가

다음 spreadsheets.batchUpdate 메서드 코드 샘플은 AddConditionalFormatRuleRequest를 사용하여 시트의 A1:D5 범위에 대해 해당 셀의 날짜 및 텍스트 값을 기반으로 새 조건부 서식 규칙을 설정하는 방법을 보여줍니다. 텍스트에 'Cost' (대소문자 구분 안 함) 문자열이 포함된 경우 첫 번째 규칙은 셀 텍스트를 굵게 설정합니다. 셀에 지난 주 이전인 날짜가 포함된 경우 두 번째 규칙은 셀 텍스트를 기울임꼴로 설정하고 파란색으로 표시합니다. 이 요청은 BooleanRuletypeConditionType를 사용합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addConditionalFormatRule": {
        "rule": {
          "ranges": [
            {
              "sheetId": SHEET_ID,
              "startRowIndex": 0,
              "endRowIndex": 5,
              "startColumnIndex": 0,
              "endColumnIndex": 4,
            }
          ],
          "booleanRule": {
            "condition": {
              "type": "TEXT_CONTAINS",
              "values": [
                {
                  "userEnteredValue": "Cost"
                }
              ]
            },
            "format": {
              "textFormat": {
                "bold": true
              }
            }
          }
        },
        "index": 0
      }
    },
    {
      "addConditionalFormatRule": {
        "rule": {
          "ranges": [
            {
              "sheetId": SHEET_ID,
              "startRowIndex": 0,
              "endRowIndex": 5,
              "startColumnIndex": 0,
              "endColumnIndex": 4,
            }
          ],
          "booleanRule": {
            "condition": {
              "type": "DATE_BEFORE",
              "values": [
                {
                  "relativeDate": "PAST_WEEK"
                }
              ]
            },
            "format": {
              "textFormat": {
                "italic": true,
                "foregroundColor": {
                  "blue": 1
                }
              }
            }
          }
        },
        "index": 1
      }
    }
  ]
}

요청 후 적용된 서식 규칙이 시트를 업데이트합니다. 이 예시에서 현재 날짜는 2016년 9월 26일입니다.

텍스트 및 날짜 조건부 서식 레시피 결과

범위에 맞춤 수식 규칙 추가

다음 spreadsheets.batchUpdate 메서드 코드 샘플은 AddConditionalFormatRuleRequest를 사용하여 맞춤 수식에 따라 시트의 B5:B8 범위에 새 조건부 서식 규칙을 설정하는 방법을 보여줍니다. 이 규칙은 A열과 B열의 셀 곱을 계산합니다. 곱이 120보다 크면 셀 텍스트가 굵은 기울임꼴로 설정됩니다. 이 요청은 BooleanRuletypeConditionType를 사용합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "addConditionalFormatRule": {
        "rule": {
          "ranges": [
            {
              "sheetId": SHEET_ID,
              "startColumnIndex": 2,
              "endColumnIndex": 3,
              "startRowIndex": 4,
              "endRowIndex": 8
            }
          ],
          "booleanRule": {
            "condition": {
              "type": "CUSTOM_FORMULA",
              "values": [
                {
                  "userEnteredValue": "=GT(A5*B5,120)"
                }
              ]
            },
            "format": {
              "textFormat": {
                "bold": true,
                "italic": true
              }
            }
          }
        },
        "index": 0
      }
    }
  ]
}

요청 후 적용된 서식 규칙이 시트를 업데이트합니다.

맞춤 조건부 서식 레시피 결과

조건부 서식 규칙 삭제하기

다음 spreadsheets.batchUpdate 메서드 코드 샘플은 DeleteConditionalFormatRuleRequest를 사용하여 SHEET_ID에서 지정한 시트에서 색조 조건부 서식 규칙(색인 0)을 삭제하는 방법을 보여줍니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "deleteConditionalFormatRule": {
        "sheetId": SHEET_ID,
        "index": 0
      }
    }
  ]
}

조건부 서식 규칙 목록 읽기

다음 spreadsheets.get 메서드 코드 샘플은 스프레드시트의 각 시트의 제목, SHEET_ID, 모든 조건부 서식 규칙 목록을 가져오는 방법을 보여줍니다. fields 쿼리 매개변수는 반환할 데이터를 결정합니다.

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

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(properties(title,sheetId),conditionalFormats)

응답은 Spreadsheet 리소스로 구성되며, 여기에는 SheetProperties 요소가 하나씩 있는 Sheet 객체의 배열과 ConditionalFormatRule 요소의 배열이 포함됩니다. 지정된 응답 필드가 기본값으로 설정된 경우 응답에서 생략됩니다. 이 요청은 BooleanRuletypeConditionType를 사용합니다.

{
  "sheets": [
    {
      "properties": {
        "sheetId": 0,
        "title": "Sheet1"
      },
      "conditionalFormats": [
        {
          "ranges": [
            {
              "startRowIndex": 4,
              "endRowIndex": 8,
              "startColumnIndex": 2,
              "endColumnIndex": 3
            }
          ],
          "booleanRule": {
            "condition": {
              "type": "CUSTOM_FORMULA",
              "values": [
                {
                  "userEnteredValue": "=GT(A5*B5,120)"
                }
              ]
            },
            "format": {
              "textFormat": {
                "bold": true,
                "italic": true
              }
            }
          }
        },
        {
          "ranges": [
            {
              "startRowIndex": 0,
              "endRowIndex": 5,
              "startColumnIndex": 0,
              "endColumnIndex": 4
            }
          ],
          "booleanRule": {
            "condition": {
              "type": "DATE_BEFORE",
              "values": [
                {
                  "relativeDate": "PAST_WEEK"
                }
              ]
            },
            "format": {
              "textFormat": {
                "foregroundColor": {
                  "blue": 1
                },
                "italic": true
              }
            }
          }
        },
        ...
      ]
    }
  ]
}

조건부 서식 규칙 또는 우선순위 업데이트

다음 spreadsheets.batchUpdate 메서드 코드 샘플은 여러 요청과 함께 UpdateConditionalFormatRuleRequest를 사용하는 방법을 보여줍니다. 첫 번째 요청은 기존의 조건부 서식 규칙을 더 높은 인덱스로 이동합니다 (0에서 2로 이동, 우선순위는 감소). 두 번째 요청은 인덱스 0의 조건부 서식 규칙을 A1:D5 범위에서 지정된 정확한 텍스트 ('Total Cost')를 포함하는 셀의 서식을 지정하는 새 규칙으로 바꿉니다. 첫 번째 요청의 이동은 두 번째 요청이 시작되기 전에 완료되므로 두 번째 요청은 원래 인덱스 1에 있었던 규칙을 바꾸게 됩니다. 요청은 BooleanRuletypeConditionType를 사용합니다.

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

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "updateConditionalFormatRule": {
        "sheetId": SHEET_ID,
        "index": 0,
        "newIndex": 2
      },
      "updateConditionalFormatRule": {
        "sheetId": SHEET_ID,
        "index": 0,
        "rule": {
          "ranges": [
            {
              "sheetId": SHEET_ID,
              "startRowIndex": 0,
              "endRowIndex": 5,
              "startColumnIndex": 0,
              "endColumnIndex": 4,
            }
          ],
          "booleanRule": {
            "condition": {
              "type": "TEXT_EQ",
              "values": [
                {
                  "userEnteredValue": "Total Cost"
                }
              ]
            },
            "format": {
              "textFormat": {
                "bold": true
              }
            }
          }
        }
      }
    }
  ]
}