조건부 형식 지정

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 요소와 ConditionalFormatRule 요소 배열이 있는 Sheet 객체 배열이 포함됩니다. 지정된 응답 필드가 기본값으로 설정되면 응답에서 생략됩니다. 이 요청은 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 범위에서 지정된 정확한 텍스트 ('총비용')가 포함된 셀의 서식을 지정하는 새 규칙으로 바꿉니다. 첫 번째 요청의 이동이 두 번째 요청이 시작되기 전에 완료되므로 두 번째 요청은 원래 색인 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
              }
            }
          }
        }
      }
    }
  ]
}