Bedingte Formatierung

Mit der Google Sheets API können Sie Regeln für die bedingte Formatierung in Tabellen erstellen und aktualisieren. Nur bestimmte Formatierungstypen (fett, kursiv, durchgestrichen, Vordergrundfarbe und Hintergrundfarbe) können durch bedingte Formatierung gesteuert werden. Die Beispiele auf dieser Seite veranschaulichen, wie gängige bedingte Formatierungsvorgänge mit der Sheets API ausgeführt werden können.

Diese Beispiele werden als sprachneutrale HTTP-Anfragen dargestellt. Informationen zum Implementieren einer Batch-Aktualisierung in verschiedenen Sprachen mithilfe der Google API-Clientbibliotheken finden Sie unter Tabellen aktualisieren.

In diesen Beispielen geben die Platzhalter SPREADSHEET_ID und SHEET_ID an, wo Sie diese IDs angeben müssen. Die Tabellen-ID finden Sie in der Tabellen-URL. Die Tabellen-ID lässt sich mit der Methode spreadsheets.get abrufen. Die Bereiche werden in der A1-Notation angegeben. Ein Beispielbereich ist Sheet1!A1:D5.

Bedingten Farbverlauf über eine Zeile hinweg hinzufügen

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie Sie mit AddConditionalFormatRuleRequest neue Regeln zur bedingten Formatierung für Gradienten für die Zeilen 10 und 11 eines Tabellenblatts festlegen. Die erste Regel besagt, dass die Hintergrundfarben von Zellen in dieser Zeile entsprechend ihrem Wert festgelegt werden. Der niedrigste Wert in der Zeile ist dunkelrot, der höchste Wert leuchtend grün. Die Farbe der anderen Werte wird interpoliert. Die zweite Regel führt das gleiche durch, allerdings mit bestimmten numerischen Werten, die die Endpunkte des Farbverlaufs (und verschiedene Farben) bestimmen. In der Anfrage wird der sheets.InterpolationPointType als type verwendet.

Das Anfrageprotokoll ist unten dargestellt.

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

Nach der Anfrage wird das Tabellenblatt durch die angewendete Formatierungsregel aktualisiert. Da für den Farbverlauf in Zeile 11 der Höchstwert auf 256 gesetzt ist, haben alle darüberliegenden Werte die Höchstpunktfarbe:

Schemaergebnis für Gradientenformat hinzufügen

Regeln für die bedingte Formatierung zu einem Satz von Bereichen hinzufügen

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie Sie mit AddConditionalFormatRuleRequest eine neue Regel für die bedingte Formatierung für die Spalten A und C eines Tabellenblatts einrichten. Die Regel besagt, dass die Hintergrundfarbe von Zellen mit Werten von 10 oder weniger in Dunkelrot geändert wird. Die Regel wird bei Index 0 eingefügt und hat daher Vorrang vor anderen Formatierungsregeln. In der Anfrage wird der ConditionType als type für den BooleanRule verwendet.

Das Anfrageprotokoll ist unten dargestellt.

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

Nach der Anfrage wird das Tabellenblatt durch die angewendete Formatierungsregel aktualisiert:

Schemaergebnis für bedingtes Format hinzufügen

Regeln für die bedingte Formatierung für Datum und Text einem Bereich hinzufügen

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie Sie mit AddConditionalFormatRuleRequest neue Regeln zur bedingten Formatierung für den Bereich A1:D5 in einem Tabellenblatt festlegen können, die auf Datums- und Textwerten in diesen Zellen basieren. Wenn der Text die Zeichenfolge "Cost" enthält (Groß-/Kleinschreibung wird nicht berücksichtigt), legt die erste Regel den Zellentext auf Fettdruck fest. Wenn die Zelle ein Datum enthält, das vor der vergangenen Woche liegt, legt die zweite Regel den Zellentext kursiv fest und färbt ihn blau. In der Anfrage wird der ConditionType als type für den BooleanRule verwendet.

Das Anfrageprotokoll ist unten dargestellt.

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

Nach der Anfrage wird das Tabellenblatt durch die angewendete Formatierungsregel aktualisiert. In diesem Beispiel ist das aktuelle Datum der 26.09.2016:

Schemaergebnis für bedingtes Text- und Datumsformat

Benutzerdefinierte Formelregel zu einem Bereich hinzufügen

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie Sie mit AddConditionalFormatRuleRequest eine neue bedingte Formatierungsregel für den Bereich B5:B8 in einem Tabellenblatt basierend auf einer benutzerdefinierten Formel erstellen. Die Regel berechnet das Produkt der Zelle in den Spalten A und B. Ist das Produkt größer als 120, wird der Zellentext fett und kursiv gesetzt. In der Anfrage wird der ConditionType als type für den BooleanRule verwendet.

Das Anfrageprotokoll ist unten dargestellt.

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

Nach der Anfrage wird das Tabellenblatt durch die angewendete Formatierungsregel aktualisiert:

Ergebnis des benutzerdefinierten bedingten Formats

Regel für die bedingte Formatierung löschen

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie Sie mit DeleteConditionalFormatRuleRequest die Regel für die bedingte Formatierung mit dem Index 0 im durch SHEET_ID angegebenen Tabellenblatt löschen.

Das Anfrageprotokoll ist unten dargestellt.

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

Liste der Regeln für die bedingte Formatierung lesen

Das folgende Codebeispiel für die Methode spreadsheets.get zeigt, wie Sie den Titel, die SHEET_ID und eine Liste aller Regeln für die bedingte Formatierung für jedes Tabellenblatt in einer Tabelle abrufen. Der Abfrageparameter fields bestimmt, welche Daten zurückgegeben werden.

Das Anfrageprotokoll ist unten dargestellt.

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

Die Antwort besteht aus einer Spreadsheet-Ressource, die ein Array von Sheet-Objekten enthält, die jeweils ein SheetProperties-Element und ein Array von ConditionalFormatRule-Elementen haben. Wenn ein bestimmtes Antwortfeld auf den Standardwert festgelegt ist, wird es in der Antwort weggelassen. In der Anfrage wird der ConditionType als type für den BooleanRule verwendet.

{
  "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
              }
            }
          }
        },
        ...
      ]
    }
  ]
}

Regel für die bedingte Formatierung oder ihre Priorität aktualisieren

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie UpdateConditionalFormatRuleRequest mit mehreren Anfragen verwendet wird. Mit der ersten Anfrage wird eine vorhandene Regel für das bedingte Format in einen höheren Index verschoben (von 0 nach 2, wodurch die Priorität verringert wird). Die zweite Anfrage ersetzt die Regel für die bedingte Formatierung bei Index 0 durch eine neue Regel, die Zellen formatiert, die den exakten Text („Gesamtkosten“) im A1:D5-Bereich enthalten. Das Verschieben der ersten Anfrage wird vor Beginn der zweiten abgeschlossen. Daher ersetzt die zweite Anfrage die Regel, die ursprünglich für Index 1 festgelegt war. In der Anfrage wird der ConditionType als type für den BooleanRule verwendet.

Das Anfrageprotokoll ist unten dargestellt.

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