Bedingte Formatierung

Mit der Google Sheets API können Sie die 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 für die bedingte Formatierung mit der Sheets API ausführen.

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

Bedingten Farbverlauf über eine Zeile hinzufügen

Das folgende spreadsheets.batchUpdate Codebeispiel für die Methode zeigt, wie Sie mit AddConditionalFormatRuleRequest neue Regeln für die bedingte Formatierung mit Farbverlauf für die Zeilen 10 und 11 eines Tabellenblatts festlegen. Die erste Regel legt fest, 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 bestimmen (und mit anderen Farben). 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 mit der angewendeten Formatierungsregel aktualisiert. Da der maximale Punkt im Farbverlauf in Zeile 11 auf 256 festgelegt ist, haben alle Werte darüber die Farbe des maximalen Punkts:

Ergebnis für Farbverlaufsformat hinzufügen

Regel für die bedingte Formatierung für eine Reihe von Bereichen hinzufügen

Das folgende spreadsheets.batchUpdate Codebeispiel für die Methode zeigt, wie Sie mit dem AddConditionalFormatRuleRequest eine neue Regel für die bedingte Formatierung für die Spalten A und C eines Tabellenblatts festlegen. Die Regel legt fest, dass die Hintergrundfarben von Zellen mit Werten von 10 oder weniger in ein dunkles Rot geändert werden. 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 BooleanRuleverwendet.

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 mit der angewendeten Formatierungsregel aktualisiert:

Rezept für bedingte Formatierung hinzufügen

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

Das folgende spreadsheets.batchUpdate Codebeispiel für die Methode zeigt, wie Sie mit dem AddConditionalFormatRuleRequest neue Regeln für die bedingte Formatierung für den Bereich A1:D5 in einem Tabellenblatt festlegen, basierend auf Datums- und Textwerten in diesen Zellen. Wenn der Text den String „Cost“ (ohne Berücksichtigung der Groß-/Kleinschreibung) enthält, wird der Zellentext mit der ersten Regel fett formatiert. Wenn die Zelle ein Datum enthält, das vor der letzten Woche liegt, wird der Zellentext mit der zweiten Regel kursiv formatiert und blau gefärbt. In der Anfrage wird ConditionType als type für die BooleanRuleverwendet.

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 mit der angewendeten Formatierungsregel aktualisiert. In diesem Beispiel ist das aktuelle Datum der 26.09.2016:

Ergebnis für bedingte Formatierung mit Text und Datum

Benutzerdefinierte Formelregel zu einem Bereich hinzufügen

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

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 mit der angewendeten Formatierungsregel aktualisiert:

Benutzerdefiniertes Ergebnis für die bedingte Formatierung

Regel für die bedingte Formatierung löschen

Das folgende spreadsheets.batchUpdate Codebeispiel für die Methode zeigt, wie Sie mit DeleteConditionalFormatRuleRequest die Regel für die bedingte Formatierung mit dem Index 0 in dem 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 spreadsheets.get Codebeispiel für die Methode 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 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. 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 entfernt. In der Anfrage wird ConditionType als type für die BooleanRuleverwendet.

{
  "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 spreadsheets.batchUpdate Codebeispiel für die Methode zeigt, wie Sie UpdateConditionalFormatRuleRequest mit mehreren Anfragen verwenden. Mit der ersten Anfrage wird eine vorhandene Regel für die bedingte Formatierung an einen höheren Index verschoben (von 0 zu 2, wodurch ihre Priorität verringert wird). Mit der zweiten Anfrage wird die Regel für die bedingte Formatierung an Index 0 durch eine neue Regel ersetzt, die Zellen mit dem exakt angegebenen Text („Total Cost“) im Bereich A1:D5 formatiert. Die Verschiebung der ersten Anfrage wird abgeschlossen, bevor die zweite beginnt. Daher ersetzt die zweite Anfrage die Regel, die ursprünglich an Index 1 stand. 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": [
    {
      "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
              }
            }
          }
        }
      }
    }
  ]
}