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

API Google Таблиц позволяет создавать и обновлять правила условного форматирования в электронных таблицах. Только определенные типы форматирования (жирный, курсив, зачеркивание, цвет переднего плана и цвет фона) можно контролировать с помощью условного форматирования. Примеры на этой странице иллюстрируют, как выполнять общие операции условного форматирования с помощью Sheets API.

Эти примеры представлены в виде HTTP-запросов, которые не зависят от языка. Чтобы узнать, как реализовать пакетное обновление на разных языках с помощью клиентских библиотек Google API, см. раздел Обновление электронных таблиц .

В этих примерах заполнители SPREADSHEET_ID и SHEET_ID указывают, где вы будете предоставлять эти идентификаторы. Идентификатор таблицы можно найти в URL-адресе таблицы. Вы можете получить идентификатор листа , используя метод spreadsheets.get . Диапазоны указаны с использованием обозначения A1 . Пример диапазона: Лист1!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 maxpoint установлено значение 256 , любые значения выше него имеют цвет maxpoint:

Добавить результат рецепта в формате градиента

Добавление правила условного форматирования в набор диапазонов

В следующем примере кода метода spreadsheets.batchUpdate показано, как использовать AddConditionalFormatRuleRequest для установки нового правила условного форматирования для столбцов A и C листа. Правило гласит, что цвет фона ячеек со значениями 10 или меньше меняется на темно-красный. Правило вставляется с индексом 0, поэтому оно имеет приоритет над другими правилами форматирования. Запрос использует ConditionType в качестве type BooleanRule .

Протокол запроса показан ниже.

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 на листе на основе дат и текстовых значений в этих ячейках. Если текст содержит строку «Стоимость» (без учета регистра), первое правило выделяет текст ячейки жирным шрифтом. Если ячейка содержит дату, произошедшую до прошлой недели, второе правило выделяет текст ячейки курсивом и окрашивает его в синий цвет. Запрос использует ConditionType в качестве type BooleanRule .

Протокол запроса показан ниже.

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, текст ячейки выделяется жирным шрифтом и курсивом. Запрос использует ConditionType в качестве type BooleanRule .

Протокол запроса показан ниже.

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 . Если для данного поля ответа установлено значение по умолчанию, оно опускается в ответе. Запрос использует ConditionType в качестве type BooleanRule .

{
  "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 в качестве type BooleanRule .

Протокол запроса показан ниже.

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