Bedingte Formatierung

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

Diese Beispiele werden als HTTP-Anfragen dargestellt, damit sie sprachneutral sind. 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 Tabellenblatt-ID können Sie mit der Methode spreadsheets.get abrufen. Die Bereiche werden in der A1-Schreibweise angegeben. Ein Beispielbereich ist Sheet1!A1:D5.

Bedingten Farbverlauf in einer 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 Gradienten für die Zeilen 10 und 11 eines Tabellenblatts festlegen. Die erste Regel besagt, dass die Hintergrundfarben für die 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 macht dasselbe, allerdings mit bestimmten numerischen Werten, die die Gradientenendpunkte (und unterschiedlichen Farben) bestimmen. In der Anfrage wird sheets.InterpolationPointType als type verwendet.

Das Anfrageprotokoll ist unten zu sehen.

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 Höchstpunkt für den Farbverlauf in Zeile 11 auf 256 festgelegt ist, haben alle darüber liegenden Werte die maximalepunktfarbe:

Schemaergebnis für Gradientenformat hinzufügen

Regeln für die bedingte Formatierung zu einer 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 können. Die Regel besagt, dass die Hintergrundfarbe von Zellen mit Werten von 10 oder weniger in ein 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 zu sehen.

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 die Tabelle durch die angewendete Formatierungsregel aktualisiert:

Schemaergebnis für bedingtes Format hinzufügen

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

Im folgenden Codebeispiel für die Methode spreadsheets.batchUpdate wird gezeigt, wie Sie mit AddConditionalFormatRuleRequest neue Regeln für die bedingte Formatierung für den Bereich A1:D5 in einem Tabellenblatt auf Basis von Datums- und Textwerten in diesen Zellen festlegen. Wenn der Text die Zeichenfolge "Kosten" enthält (Groß-/Kleinschreibung nicht berücksichtigend), wird der Zellentext mit der ersten Regel fett formatiert. Wenn die Zelle ein Datum enthält, das vor der vergangenen Woche liegt, legt die zweite Regel den Zellentext kursiv fest und legt ihn blau fest. In der Anfrage wird der ConditionType als type für den BooleanRule verwendet.

Das Anfrageprotokoll ist unten zu sehen.

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 auf Basis einer benutzerdefinierten Formel festlegen. 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 dargestellt. In der Anfrage wird der ConditionType als type für den BooleanRule verwendet.

Das Anfrageprotokoll ist unten zu sehen.

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 die Tabelle durch die angewendete Formatierungsregel aktualisiert:

Schemaergebnis für benutzerdefiniertes bedingtes Format

Regeln 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 in dem mit SHEET_ID angegebenen Tabellenblatt löschen.

Das Anfrageprotokoll ist unten zu sehen.

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 der Titel, SHEET_ID und eine Liste aller Regeln für die bedingte Formatierung für jedes Tabellenblatt in einer Tabelle abgerufen werden. Der Abfrageparameter fields bestimmt, welche Daten zurückgegeben werden sollen.

Das Anfrageprotokoll ist unten zu sehen.

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 mit jeweils einem SheetProperties-Element und einem Array von ConditionalFormatRule-Elementen enthält. Wenn ein bestimmtes Antwortfeld auf den Standardwert gesetzt ist, wird es in der Antwort ausgelassen. 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. Die erste Anfrage verschiebt eine vorhandene Regel für das bedingte Format in einen höheren Index (von 0 auf 2, wobei die Priorität verringert wird). Die zweite Anfrage ersetzt die Regel für die bedingte Formatierung beim Index 0 durch eine neue Regel, die Zellen formatiert, die genau den angegebenen Text im Bereich A1:D5 enthalten („Gesamtkosten“). Das Verschieben der ersten Anfrage ist abgeschlossen, bevor die zweite beginnt. Daher ersetzt die zweite Anfrage die Regel, die sich ursprünglich im Index 1 befand. In der Anfrage wird ConditionType als type für BooleanRule verwendet.

Das Anfrageprotokoll ist unten zu sehen.

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