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 über die bedingte Formatierung gesteuert werden. Die Beispiele auf dieser Seite veranschaulichen, wie Sie gängige Vorgänge zur bedingten Formatierung mit der Sheets API ausführen.

Diese Beispiele werden als HTTP-Anfragen dargestellt, um sprachneutral zu sein. Informationen zum Implementieren einer Batch-Aktualisierung in verschiedenen Sprachen mit den 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 würden. Die Tabellen-ID finden Sie in der Tabellen-URL. Sie können die Tabellenblatt-ID mit der Methode spreadsheets.get abrufen. Die Bereiche werden mit der A1-Notation angegeben. Ein Beispielbereich ist Tabelle1!A1:D5.

Bedingten Farbverlauf für eine Zeile hinzufügen

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie Sie mit AddConditionalFormatRuleRequest neue Regeln für die bedingte Formatierung mit Farbverlauf für die Zeilen 10 und 11 eines Tabellenblatts erstellen. Die erste Regel besagt, dass die Hintergrundfarben der Zellen in dieser Zeile entsprechend ihrem Wert festgelegt werden. Der niedrigste Wert in der Zeile ist dunkelrot und der höchste Wert hellgrün. Die Farbe der anderen Werte wird interpoliert. Die zweite Regel funktioniert ähnlich, verwendet aber bestimmte numerische Werte für die Gradientenendpunkte und andere Farben. In der Anfrage wird sheets.InterpolationPointType als type verwendet.

Das Anfrageprotokoll wird unten angezeigt.

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 der Maximalwert des Farbverlaufs in Zeile 11 auf 256 festgelegt ist, haben alle Werte darüber die Farbe für den Maximalwert:

Ergebnis für Farbverlaufsformat hinzufügen

Regel für die bedingte Formatierung für eine Gruppe 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 erstellen. Die Regel besagt, dass Zellen mit Werten von 10 oder weniger eine dunkelrote Hintergrundfarbe erhalten. Die Regel wird an Index 0 eingefügt und hat daher Vorrang vor anderen Formatierungsregeln. Die Anfrage verwendet ConditionType als type für BooleanRule.

Das Anfrageprotokoll wird unten angezeigt.

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:

Ergebnis für bedingte Formatierung hinzufügen

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

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie Sie mit AddConditionalFormatRuleRequest neue Regeln für die bedingte Formatierung für den Bereich A1:D5 in einem Tabellenblatt erstellen, die auf Datums- und Textwerten in diesen Zellen basieren. Wenn der Text den String „Cost“ (Groß-/Kleinschreibung wird nicht berücksichtigt) enthält, wird der Zellentext durch die erste Regel fett formatiert. Wenn die Zelle ein Datum vor der letzten Woche enthält, wird der Zellentext durch die zweite Regel kursiv formatiert und blau gefärbt. Die Anfrage verwendet ConditionType als type für BooleanRule.

Das Anfrageprotokoll wird unten angezeigt.

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:

Ergebnis für bedingte Formatierung mit Text und Datum

Benutzerdefinierte Formelregel für einen Bereich 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 den Bereich B5:B8 in einem Tabellenblatt erstellen, die auf einer benutzerdefinierten Formel basiert. Mit der Regel wird das Produkt der Zelle in den Spalten A und B berechnet. Wenn das Produkt größer als 120 ist, wird der Zellentext fett und kursiv formatiert. Die Anfrage verwendet ConditionType als type für BooleanRule.

Das Anfrageprotokoll wird unten angezeigt.

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:

Benutzerdefiniertes Ergebnis für die bedingte Formatierung

Regel für die bedingte Formatierung löschen

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

Das Anfrageprotokoll wird unten angezeigt.

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, SHEET_ID und die 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 wird unten angezeigt.

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. Jedes Objekt hat ein SheetProperties-Element und ein Array von ConditionalFormatRule-Elementen. Wenn ein bestimmtes Antwortfeld auf den Standardwert festgelegt ist, wird es aus der Antwort ausgelassen. Die Anfrage verwendet ConditionType als type für 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
              }
            }
          }
        },
        ...
      ]
    }
  ]
}

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

Das folgende Codebeispiel für die Methode spreadsheets.batchUpdate zeigt, wie Sie UpdateConditionalFormatRuleRequest mit mehreren Anfragen verwenden. Bei der ersten Anfrage wird eine vorhandene Regel für bedingte Formatierung auf einen höheren Index verschoben (von 0 zu 2), wodurch ihre Priorität sinkt. Mit der zweiten Anfrage wird die Regel für die bedingte Formatierung am Index 0 durch eine neue Regel ersetzt, mit der Zellen im Bereich A1:D5 formatiert werden, die den angegebenen genauen Text („Total Cost“) enthalten. Die Verschiebung der ersten Anfrage wird abgeschlossen, bevor die zweite beginnt. Die zweite Anfrage ersetzt also die Regel, die sich ursprünglich am Index 1 befand. Die Anfrage verwendet ConditionType als type für BooleanRule.

Das Anfrageprotokoll wird unten angezeigt.

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