Interfejs Google Sheets API umożliwia tworzenie i aktualizowanie reguł formatowania warunkowego w arkuszach kalkulacyjnych. Tylko niektóre typy formatowania (pogrubienie, kursywa, przekreślenie, kolor pierwszego planu i kolor tła) można kontrolować za pomocą formatowania warunkowego. Przykłady na tej stronie pokazują, jak za pomocą interfejsu Sheets API wykonywać typowe operacje formatowania warunkowego.
Przykłady te są przedstawione jako żądania HTTP, aby były niezależne od języka. Aby dowiedzieć się, jak zaimplementować aktualizację zbiorczą w różnych językach za pomocą bibliotek klienta interfejsu Google API, przeczytaj artykuł Aktualizowanie arkuszy kalkulacyjnych.
W tych przykładach symbole zastępcze SPREADSHEET_ID i SHEET_ID wskazują, gdzie należy podać te identyfikatory. Identyfikator arkusza kalkulacyjnego znajdziesz w adresie URL arkusza. Identyfikator arkusza możesz uzyskać za pomocą metody spreadsheets.get
. Zakresy są określone w notacji A1. Przykładowy zakres to Arkusz1!A1:D5.
Dodawanie warunkowego gradientu kolorów w wierszu
Poniższy przykładowy kod metody spreadsheets.batchUpdate
pokazuje, jak za pomocą metody AddConditionalFormatRuleRequest
utworzyć nowe reguły formatowania warunkowego opartego na gradientach dla wierszy 10 i 11 arkusza. Pierwsza reguła mówi, że kolor tła komórek w tym wierszu jest ustawiany zgodnie z ich wartością. Najniższa wartość w wierszu jest oznaczona ciemnoczerwonym kolorem, a najwyższa – jasnozielonym. Kolor pozostałych wartości jest interpolowany. Druga reguła robi to samo, ale z określonymi wartościami liczbowymi określającymi punkty końcowe gradientu (i różnymi kolorami). W prośbie jako type
używana jest wartość sheets.InterpolationPointType
.
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 wysłaniu prośby zastosowana reguła formatowania zaktualizuje arkusz. Ponieważ gradient w wierszu 11 ma wartość maksymalną ustawioną na 256
, wszystkie wartości powyżej mają kolor wartości maksymalnej:
Dodawanie reguły formatowania warunkowego do zestawu zakresów
Poniższy przykładowy kod metodyspreadsheets.batchUpdate
pokazuje, jak za pomocą metodyAddConditionalFormatRuleRequest
utworzyć nową regułę formatowania warunkowego dla kolumn A i C arkusza. Reguła mówi, że komórki o wartości 10 lub mniejszej mają zmienić kolor tła na ciemnoczerwony. Reguła jest wstawiana na pozycji 0, więc ma pierwszeństwo przed innymi regułami formatowania. Żądanie używa parametru ConditionType
jako type
dla parametru 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 wysłaniu żądania zastosowana reguła formatowania aktualizuje arkusz:
Dodawanie do zakresu reguł formatowania warunkowego dotyczących daty i tekstu
Poniższy przykładowy kod metody spreadsheets.batchUpdate
pokazuje, jak używać AddConditionalFormatRuleRequest
do tworzenia nowych reguł formatowania warunkowego dla zakresu A1:D5 w arkuszu na podstawie wartości dat i tekstu w tych komórkach. Jeśli tekst zawiera ciąg „Cost” (bez rozróżniania wielkości liter), pierwsza reguła ustawia tekst komórki jako pogrubiony. Jeśli komórka zawiera datę wcześniejszą niż zeszły tydzień, druga reguła ustawia tekst w komórce jako kursywę i koloruje go na niebiesko. Żądanie używa parametru ConditionType
jako type
dla parametru 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 wysłaniu prośby zastosowana reguła formatowania zaktualizuje arkusz. W tym przykładzie bieżąca data to 26.09.2016:
Dodawanie do zakresu reguły z formułą niestandardową
Poniższy przykładowy kod metodyspreadsheets.batchUpdate
pokazuje, jak za pomocą metodyAddConditionalFormatRuleRequest
utworzyć nową regułę formatowania warunkowego dla zakresu B5:B8 w arkuszu na podstawie formuły niestandardowej. Reguła oblicza iloczyn komórek w kolumnach A i B. Jeśli wartość produktu jest większa niż 120, tekst w komórce zostanie ustawiony jako <b>pogrubiony i kursywa</b>. Żądanie używa parametru ConditionType
jako type
dla parametru 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 wysłaniu żądania zastosowana reguła formatowania aktualizuje arkusz:
Usuwanie reguły formatowania warunkowego
Poniższy przykładowy kod metody spreadsheets.batchUpdate
pokazuje, jak użyć metody DeleteConditionalFormatRuleRequest
do usunięcia reguły formatowania warunkowego o indeksie 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 } } ] }
Odczytywanie listy 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 mają być zwracane.
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 pomijane w odpowiedzi. Żądanie używa parametru ConditionType
jako type
dla parametru 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
w przypadku wielu żądań. Pierwsze żądanie przenosi istniejącą regułę formatowania warunkowego na wyższy indeks (z 0
na 2
, zmniejszając jej priorytet). Druga prośba zastępuje regułę formatowania warunkowego o indeksie 0
nową regułą, która formatuje komórki zawierające dokładny tekst określony („Total Cost”) w zakresie A1:D5. Pierwsze żądanie jest realizowane przed rozpoczęciem drugiego, więc drugie żądanie zastępuje regułę, która pierwotnie znajdowała się pod indeksem 1
. W żądaniu używana jest metoda ConditionType
jako type
dla metody 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 } } } } } } ] }