Условное форматирование

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