조건부 형식 지정

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

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

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

범위에 맞춤 수식 규칙 추가

다음 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 요소가 있는 Sheet 객체의 배열과 ConditionalFormatRule 요소의 배열이 포함됩니다. 지정된 응답 필드가 기본값으로 설정된 경우 응답에서 생략됩니다. 이 요청은 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
              }
            }
          }
        }
      }
    }
  ]
}