Google Sheets API를 사용하면 스프레드시트에서 조건부 서식 규칙을 만들고 업데이트할 수 있습니다. 조건부 서식을 통해서는 특정한 서식 유형만 (굵게, 기울임꼴, 취소선, 전경색, 배경색) 제어할 수 있습니다. 이 페이지의 예시는 Sheets API로 일반적인 조건부 서식 작업을 수행하는 방법을 보여줍니다.
이 예시는 언어 중립적인 HTTP 요청으로 제공됩니다. Google API 클라이언트 라이브러리를 사용하여 다양한 언어로 일괄 업데이트를 구현하는 방법을 알아보려면 스프레드시트 업데이트를 참고하세요.
다음 예에서 자리표시자 SPREADSHEET_ID와 SHEET_ID는 이러한 ID를 제공할 위치를 나타냅니다. 스프레드시트 URL에서 스프레드시트 ID를 확인할 수 있습니다. spreadsheets.get
메서드를 사용하여 시트 ID를 가져올 수 있습니다. 범위는 A1 표기법을 사용하여 지정됩니다. 예시 범위는 Sheet1!A1:D5입니다.
한 행에 조건부 색상 그라디언트 추가
다음 spreadsheets.batchUpdate
메서드 코드 샘플은 AddConditionalFormatRuleRequest
를 사용하여 시트의 행 10과 11에 새로운 그라데이션 조건부 서식 규칙을 설정하는 방법을 보여줍니다. 첫 번째 규칙은 해당 행의 셀이 값에 따라 배경색을 설정하도록 지정합니다. 행에서 최저 값은 짙은 빨간색이고 가장 높은 값은 밝은 녹색입니다. 다른 값의 색상은 보간됩니다. 두 번째 규칙은 동일하지만 그라데이션 엔드포인트와 다른 색상을 판별하는 특정 숫자 값이 있습니다. 요청은 sheets.InterpolationPointType
를 type
로 사용합니다.
요청 프로토콜은 아래와 같습니다.
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에 삽입되므로 다른 서식 규칙보다 우선합니다. 이 요청은 ConditionType
를 BooleanRule
의 type
로 사용합니다.
요청 프로토콜은 아래와 같습니다.
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' (대소문자 구분) 문자열이 포함된 경우 첫 번째 규칙은 셀 텍스트를 굵게 설정합니다. 셀에 지난주 이전 날짜가 포함된 경우 두 번째 규칙은 셀 텍스트를 기울임꼴로 설정하고 색상을 파란색으로 설정합니다. 이 요청은 BooleanRule
의 type
로 ConditionType
를 사용합니다.
요청 프로토콜은 아래와 같습니다.
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보다 크면 셀 텍스트가 굵은 기울임꼴로 설정됩니다. 이 요청은 BooleanRule
의 type
로 ConditionType
를 사용합니다.
요청 프로토콜은 아래와 같습니다.
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
요소의 배열이 포함됩니다. 지정된 응답 필드가 기본값으로 설정된 경우 응답에서 생략됩니다. 이 요청은 ConditionType
를 BooleanRule
의 type
로 사용합니다.
{ "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
에 있었던 규칙을 바꾸게 됩니다. 이 요청은 ConditionType
를 BooleanRule
의 type
로 사용합니다.
요청 프로토콜은 아래와 같습니다.
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 } } } } } } ] }