Bedingte Formatierung

Mit der Google Sheets API können Sie Regeln für die bedingte Formatierung in Tabellen erstellen und aktualisieren. Nur bestimmte Formatierungstypen (Fettdruck, Kursivschrift, Durchstreichen, Vordergrund- und Hintergrundfarbe) können über die bedingte Formatierung gesteuert werden. In den Beispielen auf dieser Seite wird gezeigt, wie Sie gängige bedingte Formatierungsvorgänge mit der Sheets API ausführen.

Diese Beispiele werden als HTTP-Anfragen dargestellt, um sprachenunabhängig zu sein. Informationen zum Implementieren eines Batch-Updates in verschiedenen Sprachen mit den Clientbibliotheken der Google API finden Sie unter Listen aktualisieren.

In diesen Beispielen geben die Platzhalter SPREADSHEET_ID und SHEET_ID an, wo Sie diese IDs angeben würden. Sie finden die Tabellen-ID in der Tabellen-URL. Die Tabellen-ID lässt sich mit der Methode spreadsheets.get ermitteln. Die Bereiche werden in A1-Notation angegeben. Ein Beispiel für einen Bereich ist Tabelle1!A1:D5.

Bedingten Farbverlauf in einer Zeile hinzufügen

Im folgenden Codebeispiel für die Methode spreadsheets.batchUpdate wird gezeigt, wie Sie mit AddConditionalFormatRuleRequest neue Regeln für die bedingte Formatierung mit Farbverlauf für die Zeilen 10 und 11 einer Tabelle festlegen. 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, der höchste Wert hellgrün. Die Farbe der anderen Werte wird interpoliert. Die zweite Regel funktioniert genauso, aber mit bestimmten numerischen Werten, die die Endpunkte des Farbverlaufs (und unterschiedliche Farben) bestimmen. In der Anfrage wird 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 anhand der angewendeten Formatierungsregel aktualisiert. Da der Farbverlauf in Zeile 11 auf 256 festgelegt ist, haben alle Werte darüber die Farbe für den Maximalwert:

Rezeptergebnis im Farbverlaufsformat hinzufügen

Mehreren Bereichen eine Regel für die bedingte Formatierung hinzufügen

Im folgenden Codebeispiel für die Methode spreadsheets.batchUpdate wird gezeigt, wie mit AddConditionalFormatRuleRequest eine neue bedingte Formatierungsregel für die Spalten A und C eines Tabellenblatts festgelegt wird. Die Regel besagt, dass die Hintergrundfarbe von Zellen mit Werten von 10 oder weniger in ein dunkles Rot geändert wird. Die Regel wird an Index 0 eingefügt und hat daher Vorrang vor anderen Formatierungsregeln. In der Anfrage wird ConditionType als type für die 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 anhand der angewendeten Formatierungsregel aktualisiert:

Bedingte Formatierung für Rezeptergebnis hinzufügen

Einem Bereich Regeln für die bedingte Formatierung von Datumsangaben 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 einer Tabelle basierend auf den Datums- und Textwerten in diesen Zellen festlegen. Wenn der Text den String „Kosten“ enthält (ohne Berücksichtigung der Groß- und Kleinschreibung), 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 in Kursivschrift und blauer Farbe dargestellt. In der Anfrage wird ConditionType als type für die 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 anhand der angewendeten Formatierungsregel aktualisiert. In diesem Beispiel ist der 26. September 2016 das aktuelle Datum:

Bedingte Formatierung von Text und Datum für Rezeptergebnisse

Einem Bereich eine benutzerdefinierte Formelregel hinzufügen

Im folgenden Beispiel für den Methodencode spreadsheets.batchUpdate wird gezeigt, wie Sie mit AddConditionalFormatRuleRequest eine neue bedingte Formatierungsregel für den Bereich B5:B8 in einem Tabellenblatt auf der Grundlage einer benutzerdefinierten Formel festlegen. Mit der Regel wird das Produkt der Zellen in den Spalten A und B berechnet. Ist das Produkt größer als 120, wird der Zellentext fett und kursiv dargestellt. In der Anfrage wird ConditionType als type für die 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 anhand der angewendeten Formatierungsregel aktualisiert:

Rezeptergebnis mit benutzerdefinierter bedingter Formatierung

Regel für die bedingte Formatierung löschen

Im folgenden Codebeispiel für die Methode spreadsheets.batchUpdate wird gezeigt, wie Sie mit DeleteConditionalFormatRuleRequest die bedingte Formatierungsregel 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 ansehen

Im folgenden Beispiel für den Code der Methode spreadsheets.get wird gezeigt, wie Sie den Titel, SHEET_ID und die Liste aller Regeln für die bedingte Formatierung für jedes Tabellenblatt in einer Tabelle abrufen. Mit dem Abfrageparameter fields wird festgelegt, 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 mit jeweils einem SheetProperties-Element und einem Array von ConditionalFormatRule-Elementen enthält. Wenn ein bestimmtes Antwortfeld auf den Standardwert festgelegt ist, wird es aus der Antwort entfernt. In der Anfrage wird ConditionType als type für die 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

Im folgenden Codebeispiel für die Methode spreadsheets.batchUpdate wird gezeigt, wie UpdateConditionalFormatRuleRequest mit mehreren Anfragen verwendet wird. Bei der ersten Anfrage wird eine vorhandene bedingte Formatregel zu einem 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, die Zellen im Bereich A1:D5 formatiert, die genau den angegebenen Text („Gesamtkosten“) enthalten. Die erste Anfrage ist abgeschlossen, bevor die zweite beginnt. Daher ersetzt die zweite Anfrage die Regel, die ursprünglich unter Index 1 stand. In der Anfrage wird ConditionType als type für 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
              }
            }
          }
        }
      }
    }
  ]
}