Formatowanie warunkowe

Interfejs Google Arkuszy API umożliwia tworzenie i aktualizowanie reguł 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 za pomocą interfejsu Arkuszy Google wykonywać typowe operacje formatowania warunkowego.

Te przykłady są prezentowane jako żądania HTTP bez względu na język. Aby dowiedzieć się, jak wdrożyć aktualizację zbiorczą w różnych językach za pomocą bibliotek klienta interfejsu API Google, przeczytaj artykuł o aktualizowaniu arkuszy kalkulacyjnych.

W tych przykładach obiekty zastępcze SPREADSHEET_ID i SHEET_ID wskazują, gdzie należy podać te identyfikatory. Ten identyfikator arkusza kalkulacyjnego znajdziesz w adresie URL arkusza kalkulacyjnego. Identyfikator arkusza możesz uzyskać za pomocą metody spreadsheets.get. Zakresy określa się 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 używać AddConditionalFormatRuleRequest do ustanowienia nowych reguł formatowania warunkowego gradientu w wierszach 10 i 11 arkusza. Pierwsza reguła wskazuje, że kolory tła komórek w tym wierszu są ustawione zgodnie z wartościami. Najniższa wartość w wierszu jest w kolorze ciemnoczerwonym, a najwyższa w kolorze jasnozielonym. Kolor pozostałych wartości jest interpolowany. Druga reguła robi to samo, ale z określonymi wartościami liczbowymi, które określają punkty końcowe gradientu (i różne kolory). Żądanie używa sheets.InterpolationPointType jako type.

Protokół żądania jest widoczny 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 formatu zaktualizuje arkusz. Punkt maksymalny gradientu w wierszu 11 ma wartość 256, więc wszystkie wartości nad nim mają maksymalny kolor punktu maksymalnego:

Dodaj wynik przepisu w formacie gradientu

Dodawanie reguły formatowania warunkowego do zbioru zakresów

Poniższy przykładowy kod metody spreadsheets.batchUpdate pokazuje, jak użyć AddConditionalFormatRuleRequest do ustanowienia nowej reguły formatowania warunkowego dla kolumn A i C w arkuszu. Reguła określa, że kolor tła komórek z wartościami nieprzekraczającymi 10 jest zmieniany 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 widoczny 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 formatu zaktualizuje arkusz:

Dodaj wynik przepisu w formacie warunkowym

Dodawanie do zakresu reguł formatowania warunkowego daty i tekstu

Poniższy przykładowy kod metody spreadsheets.batchUpdate pokazuje, jak używać 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 „Koszt” (wielkość liter nie jest rozróżniana), pierwsza reguła pogrubia tekst komórki. Jeśli komórka zawiera datę sprzed ostatniego tygodnia, druga reguła ustawi kursywę i kolor niebieski. Żądanie używa ConditionType jako type dla BooleanRule.

Protokół żądania jest widoczny 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 formatu zaktualizuje arkusz. W tym przykładzie bieżąca data to 26.09.2016 r.:

Wynik przepisu w formacie warunkowym typu tekst i data

Dodawanie niestandardowej reguły formuły do zakresu

Poniższyspreadsheets.batchUpdate przykładowy kod metody pokazuje, jak korzystać zAddConditionalFormatRuleRequest do ustanowienia w arkuszu nowej reguły formatowania warunkowego dla zakresu B5:B8 na podstawie formuły niestandardowej. Reguła oblicza iloczyn komórki w kolumnach A i B. Jeśli iloczyn jest większy niż 120, tekst w komórce jest pisany pogrubieniem i kursywą. Żądanie używa ConditionType jako type dla BooleanRule.

Protokół żądania jest widoczny 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 formatu 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 z indeksem 0 w arkuszu określonym przez SHEET_ID.

Protokół żądania jest widoczny 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 i listę wszystkich reguł formatowania warunkowego dla każdego arkusza w arkuszu kalkulacyjnym. Parametr zapytania fields określa, jakie dane zwrócić.

Protokół żądania jest widoczny 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 i tablicę elementów ConditionalFormatRule. Jeśli dane pole odpowiedzi ma wartość domyślną, jest ono pomijane. Żą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, co zmniejsza jego priorytet). Drugie żądanie zastępuje regułę formatowania warunkowego w pozycji 0 nową regułą, która formatuje komórki zawierające dokładnie określony tekst („Całkowity koszt”) 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. W żądaniu ConditionType jest używane jako type dla BooleanRule.

Protokół żądania jest widoczny 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
              }
            }
          }
        }
      }
    }
  ]
}