조건부 형식 지정

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에 삽입되므로 다른 형식 지정 규칙보다 우선합니다. 이 요청에서는 ConditionTypeBooleanRuletype로 사용합니다.

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

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' 문자열(대소문자를 구분하지 않음)이 포함된 경우 첫 번째 규칙은 셀 텍스트를 굵게 설정합니다. 셀에 지난주 이전의 날짜가 포함된 경우 두 번째 규칙은 셀 텍스트를 기울임꼴로 설정하고 파란색으로 지정합니다. 이 요청에서는 ConditionTypeBooleanRuletype로 사용합니다.

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

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
      }
    }
  ]
}

요청 후 적용된 서식 규칙에 따라 시트가 업데이트됩니다. 이 예에서 현재 날짜는 9/26/2016입니다.

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

범위에 맞춤 수식 규칙 추가하기

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

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

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 요소와 ConditionalFormatRule 요소 배열이 있는 Sheet 객체의 배열이 포함됩니다. 지정된 응답 필드가 기본값으로 설정되면 응답에서 생략됩니다. 이 요청에서는 ConditionTypeBooleanRuletype로 사용합니다.

{
  "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 범위에서 지정된 정확한 텍스트 ('총 비용')를 포함하는 셀의 서식을 지정하는 새 규칙으로 바꿉니다. 첫 번째 요청의 이동은 두 번째 요청이 시작되기 전에 완료되므로 두 번째 요청은 원래 색인 1에 있던 규칙을 대체합니다. 이 요청에서는 ConditionTypeBooleanRuletype로 사용합니다.

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

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
              }
            }
          }
        }
      }
    }
  ]
}