Formatowanie warunkowe

Interfejs API Arkuszy Google pozwala tworzyć i aktualizować reguły formatowania warunkowego w arkuszach kalkulacyjnych. Za pomocą formatowania warunkowego można kontrolować tylko niektóre typy formatowania (pogrubienie, kursywa, przekreślenie, kolor pierwszego planu i kolor tła). Przykłady na tej stronie pokazują, jak wykonywać typowe operacje formatowania warunkowego za pomocą interfejsu Sheets API.

Te przykłady są prezentowane jako żądania HTTP neutralne pod kątem języka. Aby dowiedzieć się, jak wdrożyć aktualizację zbiorczą w różnych językach przy użyciu bibliotek klienta interfejsu API Google, przeczytaj artykuł Aktualizowanie arkuszy kalkulacyjnych.

W tych przykładach obiekty zastępcze SPREADSHEET_ID i SHEET_ID wskazują, gdzie należy je umieścić. Identyfikator arkusza kalkulacyjnego znajdziesz w adresie URL arkusza kalkulacyjnego. Identyfikator arkusza możesz uzyskać, korzystając z metody spreadsheets.get. Zakresy są określane w notacji A1. Przykładowy zakres to Arkusz1!A1:D5.

Dodawanie warunkowego gradientu koloru w wierszu

Poniższy przykładowy kod metody spreadsheets.batchUpdate pokazuje, jak za pomocą metody AddConditionalFormatRuleRequest ustanawiać nowe reguły formatowania warunkowego gradientu w wierszach 10 i 11 arkusza. Pierwsza reguła mówi, że kolory tła komórek w tym wierszu zależą od wartości. Najniższa wartość w wierszu ma kolor ciemnoczerwony, a najwyższa – jasnozielony. Kolor innych wartości jest interpolowany. Druga reguła działa tak samo, ale z określonymi wartościami liczbowymi określającymi punkty końcowe gradientu (i innymi kolorami). W żądaniu używany jest sheets.InterpolationPointType jako type.

Protokół żądania jest pokazany poniżej.

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

Po przesłaniu żądania zastosowana reguła formatowania zaktualizuje arkusz. Gradient w wierszu 11 ma wartość maksymalną równą 256, dlatego wszystkie wartości znajdujące się nad nim mają atrybut maksymalny kolor:

Dodaj wynik przepisu w formacie gradientu

Dodaj regułę formatowania warunkowego do zbioru zakresów

Poniższy przykładowy kod metody spreadsheets.batchUpdate pokazuje, jak za pomocą metody AddConditionalFormatRuleRequest utworzyć nową regułę formatowania warunkowego dla kolumn A i C arkusza. Reguła mówi, że kolory tła komórek o wartości 10 lub mniejszej są zmieniane na ciemnoczerwony. Reguła jest wstawiona w indeksie 0, więc ma wyższy priorytet niż inne reguły formatowania. Żądanie używa ConditionType jako type dla BooleanRule.

Protokół żądania jest pokazany poniżej.

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

Po przesłaniu żądania zastosowana reguła formatowania zaktualizuje arkusz:

Dodaj wynik przepisu w formacie warunkowym

Dodawanie reguł formatowania warunkowego daty i tekstu do zakresu

Poniższy przykładowy kod metody spreadsheets.batchUpdate pokazuje, jak użyć AddConditionalFormatRuleRequest do ustanowienia nowych reguł formatowania warunkowego dla zakresu A1:D5 w arkuszu na podstawie daty i wartości tekstowych w tych komórkach. Jeśli tekst zawiera ciąg znaków „Koszt” (wielkość liter nie jest rozróżniana), pierwsza reguła ustawia pogrubienie tekstu w komórce. Jeśli komórka zawiera datę wcześniejszą niż ubiegły tydzień, druga reguła ustawia kursywę tekstu w komórce i nadaje mu kolor niebieski. Żądanie używa ConditionType jako type dla BooleanRule.

Protokół żądania jest pokazany poniżej.

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

Po przesłaniu żądania zastosowana reguła formatowania zaktualizuje arkusz. W tym przykładzie jest to 26.09.2016 r.:

Wynik przepisu w formacie warunkowym z tekstem i datą

Dodawanie niestandardowej reguły formuły do zakresu

Poniższy przykładowy kod metody spreadsheets.batchUpdate pokazuje, jak użyć AddConditionalFormatRuleRequest do ustanowienia w arkuszu nowej reguły formatowania warunkowego dla zakresu B5:B8 w oparciu o formułę niestandardową. Reguła oblicza iloczyn komórki w kolumnach A i B. Jeśli produkt ma więcej niż 120 znaków, tekst komórki jest wyświetlany pogrubioną i kursywą. Żądanie używa ConditionType jako type dla BooleanRule.

Protokół żądania jest pokazany poniżej.

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

Po przesłaniu żądania zastosowana reguła formatowania zaktualizuje arkusz:

Wynik przepisu w niestandardowym formacie warunkowym

Usuwanie reguły formatowania warunkowego

Poniższy przykładowy kod metody spreadsheets.batchUpdate pokazuje, jak użyć DeleteConditionalFormatRuleRequest do usunięcia reguły formatowania warunkowego o indeksie 0 w arkuszu określonym przez SHEET_ID.

Protokół żądania jest pokazany poniżej.

POST https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID:batchUpdate
{
  "requests": [
    {
      "deleteConditionalFormatRule": {
        "sheetId": SHEET_ID,
        "index": 0
      }
    }
  ]
}

Przeczytaj listę reguł formatowania warunkowego

Poniższy przykładowy kod metody spreadsheets.get pokazuje, jak uzyskać tytuł, SHEET_ID oraz listę wszystkich reguł formatowania warunkowego dla każdego arkusza w arkuszu kalkulacyjnym. Parametr zapytania fields określa, jakie dane należy zwrócić.

Protokół żądania jest pokazany poniżej.

GET https://sheets.googleapis.com/v4/spreadsheets/SPREADSHEET_ID?fields=sheets(properties(title,sheetId),conditionalFormats)

Odpowiedź składa się z zasobu Spreadsheet, który zawiera tablicę obiektów Sheet, z których każdy ma element SheetProperties oraz tablicę elementów ConditionalFormatRule. Jeśli dane pole odpowiedzi ma wartość domyślną, jest ono pomijane w odpowiedzi. Żądanie używa ConditionType jako type dla 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
              }
            }
          }
        },
        ...
      ]
    }
  ]
}

Aktualizowanie reguły formatowania warunkowego lub jej priorytetu

Poniższy przykładowy kod metody spreadsheets.batchUpdate pokazuje, jak używać metody UpdateConditionalFormatRuleRequest z wieloma żądaniami. Pierwsze żądanie przenosi istniejącą regułę formatu warunkowego do wyższego indeksu (z 0 do 2, zmniejszając jej priorytet). Drugie żądanie zastępuje regułę formatowania warunkowego w indeksie 0 nową regułę, która formatuje komórki zawierające dokładnie taki tekst („koszt całkowity”) w zakresie A1:D5. Przenoszenie pierwszego żądania kończy się przed rozpoczęciem drugiego, więc drugie żądanie zastępuje regułę, która pierwotnie znajdowała się w indeksie 1. Żądanie używa ConditionType jako type obiektu BooleanRule.

Protokół żądania jest pokazany poniżej.

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