Koşullu biçimlendirme

Google Sheets API, e-tablolarda koşullu biçimlendirme kuralları oluşturmanıza ve güncellemenize olanak tanır. Koşullu biçimlendirmeyle yalnızca belirli biçimlendirme türleri (kalın, italik, üstü çizili, ön plan rengi ve arka plan rengi) kontrol edilebilir. Bu sayfada, Sheets API ile yaygın koşullu biçimlendirme işlemlerinin nasıl yapılacağı gösterilmektedir.

Bu örnekler, dil açısından tarafsız olması için HTTP istekleri olarak sunulur. Google API istemci kitaplıklarını kullanarak farklı dillerde toplu güncelleme yapmayı öğrenmek için E-tabloları güncelleme başlıklı makaleyi inceleyin.

Bu örneklerde, SPREADSHEET_ID ve SHEET_ID yer tutucuları bu kimlikleri nerede sağlayacağınızı gösterir. E-tablo kimliğini e-tablo URL'sinde bulabilirsiniz. spreadsheets.get yöntemini kullanarak e-tablo kimliğini alabilirsiniz. Aralıklar A1 gösterimi kullanılarak belirtilir. Örnek aralık: Sayfa1!A1:D5.

Bir satıra koşullu renk gradyanı ekleme

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, bir sayfanın 10. ve 11. satırları için yeni degrade koşullu biçimlendirme kuralları oluşturmak üzere AddConditionalFormatRuleRequest işlevinin nasıl kullanılacağı gösterilmektedir. İlk kural, söz konusu satırdaki hücrelerin arka plan renklerinin değerlerine göre ayarlandığını belirtir. Satırdaki en düşük değer koyu kırmızı, en yüksek değer ise açık yeşil renkte gösterilir. Diğer değerlerin rengi, doğrusal olmayan uzamsal interplasyonla belirlenir. İkinci kural da aynı işlemi yapar ancak gradyan uç noktalarını (ve farklı renkleri) belirleyen belirli sayısal değerlerle yapar. İstek, type olarak sheets.InterpolationPointType değerini kullanır.

İstek protokolü aşağıda gösterilmiştir.

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

İstek yapıldıktan sonra uygulanan biçimlendirme kuralı sayfayı günceller. 11. satırdaki renk geçişinin maksimum noktası 256 olarak ayarlandığından, bu değerin üzerindeki tüm değerler maksimum nokta rengini alır:

Gradyan biçiminde yemek tarifi sonucu ekleme

Bir aralık grubuna koşullu biçimlendirme kuralı ekleme

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, bir sayfanın A ve C sütunları için yeni bir koşullu biçimlendirme kuralı oluşturmak üzere AddConditionalFormatRuleRequest işlevinin nasıl kullanılacağı gösterilmektedir. Kural, 10 veya daha az değere sahip hücrelerin arka plan renklerinin koyu kırmızıya değiştirildiğini belirtir. Kural, 0 dizine eklenir. Bu nedenle, diğer biçimlendirme kurallarına göre önceliklidir. İstek, BooleanRule için type olarak ConditionType değerini kullanır.

İstek protokolü aşağıda gösterilmiştir.

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

İstek sonrasında, uygulanan biçimlendirme kuralı sayfayı günceller:

Koşullu biçimlendirme yemek tarifi sonucu ekleme

Bir aralık için tarih ve metin koşullu biçimlendirme kuralları ekleme

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, bir e-tablodaki A1:D5 aralığı için yeni koşullu biçimlendirme kuralları oluşturmak amacıyla AddConditionalFormatRuleRequest işlevinin bu hücrelerdeki tarih ve metin değerlerine göre nasıl kullanılacağı gösterilmektedir. Metin "Maliyet" dizesini içeriyorsa (büyük/küçük harf duyarlı değildir) ilk kural, hücre metnini kalın olarak ayarlar. Hücre, geçen haftadan önceki bir tarih içeriyorsa ikinci kural, hücre metnini italik olarak ayarlar ve mavi renkte gösterir. İstek, BooleanRule için type olarak ConditionType değerini kullanır.

İstek protokolü aşağıda gösterilmiştir.

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

İstek yapıldıktan sonra uygulanan biçimlendirme kuralı sayfayı günceller. Bu örnekte, geçerli tarih 26.09.2016'dır:

Metin ve tarih koşullu biçimlendirme yemek tarifi sonucu

Bir alana özel formül kuralı ekleme

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, bir e-tablodaki B5:B8 aralığı için özel bir formüle dayalı yeni bir koşullu biçimlendirme kuralı oluşturmak üzere AddConditionalFormatRuleRequest işlevinin nasıl kullanılacağı gösterilmektedir. Kural, A ve B sütunlarındaki hücrenin çarpımını hesaplar. Ürün 120'den büyükse hücre metni kalın ve italik olarak ayarlanır. İstek, BooleanRule için type olarak ConditionType değerini kullanır.

İstek protokolü aşağıda gösterilmiştir.

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

İstek sonrasında, uygulanan biçimlendirme kuralı sayfayı günceller:

Özel koşullu biçim yemek tarifi sonucu

Koşullu biçimlendirme kuralını silme

Aşağıdaki spreadsheets.batchUpdate yöntem kod örneğinde, SHEET_ID tarafından belirtilen sayfadaki 0 dizini olan koşullu biçimlendirme kuralını silmek için DeleteConditionalFormatRuleRequest işlevinin nasıl kullanılacağı gösterilmektedir.

İstek protokolü aşağıda gösterilmiştir.

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

Koşullu biçimlendirme kurallarının listesini okuma

Aşağıdaki spreadsheets.get yöntem kodu örneğinde, bir e-tablodaki her sayfanın başlığının, SHEET_ID ve tüm koşullu biçimlendirme kurallarının nasıl alınacağı gösterilmektedir. fields sorgu parametresi, döndürülecek verileri belirler.

İstek protokolü aşağıda gösterilmiştir.

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

Yanıt, her biri bir SheetProperties öğesine ve bir ConditionalFormatRule öğeleri dizisine sahip Sheet nesneleri dizisi içeren bir Spreadsheet kaynağından oluşur. Belirli bir yanıt alanı varsayılan değere ayarlanmışsa yanıttan çıkarılır. İstek, BooleanRule için type olarak ConditionType değerini kullanır.

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

Koşullu biçimlendirme kuralını veya önceliğini güncelleme

Aşağıdaki spreadsheets.batchUpdate kod örneğinde, UpdateConditionalFormatRuleRequest işlevinin birden fazla istekle nasıl kullanılacağı gösterilmektedir. İlk istek, mevcut bir koşullu biçimlendirme kuralını daha yüksek bir dizinle (0'ten 2'e, önceliği düşürerek) taşır. İkinci istek, 0 dizinindeki koşullu biçimlendirme kuralını, A1:D5 aralığında belirtilen metni ("Toplam Maliyet") tam olarak içeren hücreleri biçimlendiren yeni bir kuralla değiştirir. İlk istek, ikinci istek başlamadan önce taşınır. Bu nedenle, ikinci istek, başlangıçta 1 dizininde bulunan kuralı değiştirir. İstek, BooleanRule için type olarak ConditionType değerini kullanır.

İstek protokolü aşağıda gösterilmiştir.

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