API Google Таблиц позволяет создавать и обновлять правила условного форматирования в электронных таблицах. С помощью условного форматирования можно управлять только определёнными типами форматирования (жирный, курсив, зачёркнутый, цвет переднего плана и цвет фона). Примеры на этой странице иллюстрируют, как реализовать распространённые операции условного форматирования с помощью API Таблиц.
Эти примеры представлены в виде HTTP-запросов, чтобы не зависеть от языка. Чтобы узнать, как реализовать пакетное обновление на разных языках с помощью клиентских библиотек API Google, см. раздел Обновление электронных таблиц .
В этих примерах плейсхолдеры SPREADSHEET_ID и SHEET_ID указывают, где следует указать эти идентификаторы. Идентификатор таблицы можно найти в URL-адресе таблицы. Получить идентификатор листа можно с помощью метода spreadsheets.get
. Диапазоны указываются в формате A1 . Пример диапазона: Sheet1!A1:D5.
Добавить условный цветовой градиент по всей строке
В следующем примере кода метода spreadsheets.batchUpdate
показано, как использовать AddConditionalFormatRuleRequest
для установки новых правил условного форматирования градиента для строк 10 и 11 листа. Первое правило устанавливает, что цвета фона ячеек в этой строке устанавливаются в соответствии с их значениями. Наименьшее значение в строке окрашивается в тёмно-красный цвет, а наибольшее — в ярко-зелёный. Цвет остальных значений интерполируется. Второе правило делает то же самое, но с конкретными числовыми значениями, определяющими конечные точки градиента (и другие цвета). В запросе используется type
sheets.InterpolationPointType
.
Протокол запроса показан ниже.
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, поэтому оно имеет приоритет над другими правилами форматирования. В запросе в качестве type
для BooleanRule
используется 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» (без учета регистра), первое правило выделяет текст ячейки жирным шрифтом. Если ячейка содержит дату, относящуюся к предыдущей неделе, второе правило выделяет текст ячейки курсивом и окрашивает его в синий цвет. В запросе в качестве type
для BooleanRule
используется 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 } } ] }
После запроса применённое правило форматирования обновляет лист. В этом примере текущая дата — 26.09.2016:
Добавить пользовательское правило формулы к диапазону
В следующем примере кода метода spreadsheets.batchUpdate
показано, как использовать AddConditionalFormatRuleRequest
для установки нового правила условного форматирования для диапазона B5:B8 на листе на основе пользовательской формулы. Правило вычисляет произведение ячеек в столбцах A и B. Если произведение больше 120, текст ячейки выделяется полужирным курсивом. В запросе в качестве type
для BooleanRule
используется 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
для удаления правила условного форматирования с индексом 0
на листе, указанном SHEET_ID .
Протокол запроса показан ниже.
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
, содержащего массив объектов Sheet
, каждый из которых содержит элемент SheetProperties
, и массив элементов ConditionalFormatRule
. Если для поля ответа задано значение по умолчанию, оно исключается из ответа. В запросе в качестве type
для BooleanRule
используется 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
новым правилом, которое форматирует ячейки, содержащие указанный текст («Total Cost») в диапазоне A1:D5. Перемещение в первом запросе завершается до начала второго, поэтому второй запрос заменяет правило, изначально находившееся с индексом 1
В запросе в качестве type
для BooleanRule
используется 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 } } } } } } ] }