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번째 행의 그라데이션은 최댓값이 256
로 설정되어 있으므로 이보다 큰 값은 최댓값 색상이 적용됩니다.
범위 집합에 조건부 서식 규칙 추가
다음 spreadsheets.batchUpdate
메서드 코드 샘플은 AddConditionalFormatRuleRequest
을 사용하여 시트의 A열과 C열에 새 조건부 서식 규칙을 설정하는 방법을 보여줍니다.
이 규칙에 따라 값이 10 이하인 셀의 배경색이 어두운 빨간색으로 변경됩니다. 규칙이 색인 0에 삽입되므로 다른 서식 지정 규칙보다 우선합니다. 요청은 BooleanRule
의 type
로 ConditionType
을 사용합니다.
요청 프로토콜은 다음과 같습니다.
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
요소와 ConditionalFormatRule
요소의 배열이 있는 Sheet
객체의 배열이 포함됩니다. 지정된 응답 필드가 기본값으로 설정되면 응답에서 생략됩니다. 요청은 BooleanRule
의 type
로 ConditionType
을 사용합니다.
{ "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
에 있던 규칙을 대체합니다. 요청은 BooleanRule
의 type
로 ConditionType
를 사용합니다.
요청 프로토콜은 다음과 같습니다.
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 } } } } } } ] }