조건부 형식 지정

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번째 행의 그라데이션은 최댓값이 256로 설정되어 있으므로 이 값을 초과하는 값은 최댓값 색상이 적용됩니다.

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

범위 집합에 조건부 서식 규칙 추가

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