Interfejs Google Sheets 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 wykonywać typowe operacje formatowania warunkowego za pomocą interfejsu Sheets API.
Te przykłady są przedstawione jako żądania HTTP, aby były neutralne pod względem języka. Aby dowiedzieć się, jak za pomocą bibliotek klienta interfejsu Google API wdrożyć zbiorcze aktualizowanie w różnych językach, przeczytaj artykuł Aktualizowanie arkuszy kalkulacyjnych.
W tych przykładach obiekty zastępcze SPREADSHEET_ID i SHEET_ID wskazują, gdzie należy podać te identyfikatory. Identyfikator arkusza kalkulacyjnego znajdziesz w adresie URL arkusza kalkulacyjnego. Identyfikator arkusza możesz uzyskać, używając metody spreadsheets.get
. Zakresy są określone za pomocą 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 gradientu dla wierszy 10 i 11 w arkuszu. Pierwsza reguła określa, że kolory tła komórek w tym wierszu są ustawiane zgodnie z ich wartością. Najniższa wartość w wierszu jest oznaczona na ciemnoczerwono, a najwyższa – na jasnozielono. Kolor pozostałych wartości jest interpolowany. Druga reguła działa tak samo, ale z użyciem określonych wartości liczbowych określających punkty końcowe gradientu (i inne kolory). Prośba używa parametru sheets.InterpolationPointType
jako parametru type
.
Protokół żądania przedstawiono 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 prośby zastosowana reguła formatowania zaktualizuje arkusz. Ponieważ gradient w wierszu 11 ma ustawioną wartość maksymalną 256
, wszystkie wartości powyżej mają kolor:
Dodawanie reguły formatowania warunkowego do zestawu zakresów
Poniższy przykładowy kod metody spreadsheets.batchUpdate
pokazuje, jak za pomocą funkcji AddConditionalFormatRuleRequest
utworzyć nową regułę formatowania warunkowego dla kolumn A i C w arkuszu.
Reguła ta określa, że tło komórek z wartością 10 lub mniejszą zmienia kolor na ciemnocny czerwony. Reguła jest wstawiana pod indeksem 0, więc ma pierwszeństwo przed innymi regułami formatowania. W żądaniu jako type
dla BooleanRule
jest używana wartość ConditionType
.
Protokół żądania przedstawiono 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:
Dodawanie reguł formatowania warunkowego dat i tekstu do zakresu
Ten przykład kodu metody spreadsheets.batchUpdate
pokazuje, jak za pomocą funkcji AddConditionalFormatRuleRequest
utworzyć nowe reguły formatowania warunkowego dla zakresu A1:D5 w arkuszu na podstawie wartości daty i tekstu w tych komórkach. Jeśli tekst zawiera ciąg „Cost” (niezależnie od wielkości liter), pierwsza reguła powoduje zaznaczenie tekstu w komórce czcionką pogrubioną. Jeśli komórka zawiera datę wcześniejszą niż zeszły tydzień, druga reguła powoduje, że tekst w komórce jest pogrubiony i ma kolor niebieski. W żądaniu jako type
dla BooleanRule
jest używana wartość ConditionType
.
Protokół żądania przedstawiono 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 prośby zastosowana reguła formatowania zaktualizuje arkusz. W tym przykładzie bieżąca data to 26.09.2016:
Dodawanie reguły formuły niestandardowej do zakresu
Poniższy przykładowy kod metody spreadsheets.batchUpdate
pokazuje, jak za pomocą funkcji AddConditionalFormatRuleRequest
utworzyć nową regułę formatowania warunkowego dla zakresu B5:B8 w arkuszu na podstawie niestandardowej formuły. Reguła oblicza iloczyn komórek w kolumnach A i B. Jeśli produkt ma więcej niż 120 punktów, tekst w komórce jest pogrubiony i pochylony. W żądaniu jako type
dla BooleanRule
jest używana wartość ConditionType
.
Protokół żądania przedstawiono 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:
Usuwanie reguły formatowania warunkowego
Poniższy przykładowy kod metody spreadsheets.batchUpdate
pokazuje, jak użyć funkcji DeleteConditionalFormatRuleRequest
, aby usunąć regułę formatowania warunkowego o indeksie 0
w arkuszu określonym przez zmienną SHEET_ID.
Protokół żądania przedstawiono 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 pobrać tytuł, SHEET_ID i listę wszystkich reguł formatowania warunkowego dla każdego arkusza w arkuszu kalkulacyjnym. Parametr zapytania fields
określa, jakie dane mają zostać zwrócone.
Protokół żądania przedstawiono 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 zawiera element SheetProperties
i tablicę elementów ConditionalFormatRule
. Jeśli dane pole odpowiedzi ma wartość domyślną, jest pomijane w odpowiedzi. W żądaniu jako type
dla BooleanRule
jest używana wartość 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 } } } }, ... ] } ] }
Zmień regułę formatowania warunkowego lub jej priorytet
Ten przykładowy kod metody spreadsheets.batchUpdate
pokazuje, jak używać metody UpdateConditionalFormatRuleRequest
z wieloma żądaniami. Pierwsze żądanie przenosi istniejące reguły formatowania warunkowego na wyższy indeks (z 0
na 2
, co powoduje obniżenie ich priorytetu). Druga prośba zastępuje regułę formatowania warunkowego o indeksie 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 jest zakończone przed rozpoczęciem drugiego, więc drugie żądanie zastępuje regułę, która pierwotnie znajdowała się pod indeksem 1
. W prośbie używana jest wartość ConditionType
jako parametr type
w przypadku BooleanRule
.
Protokół żądania przedstawiono 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 } } } } } } ] }