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çimlendirme aracılığıyla 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ı belirtir. 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, bu 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 ara değer olarak hesaplanır. İ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çimi tarif sonucu ekle

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 özelliğinin nasıl kullanılacağı gösterilmektedir. Kural, 10 veya daha düşük değere sahip hücrelerin arka plan renklerinin koyu kırmızıya değiştirildiğini belirtir. Kural, 0. dizine eklendiğinden diğer biçimlendirme kurallarına göre öncelikli olur. İ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 harfe duyarlı değil) 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 tarifi sonucu

Aralığa ö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öntemi kod örneğinde, bir e-tablodaki her sayfa için başlığın, SHEET_ID öğesinin ve tüm koşullu biçimlendirme kurallarının listesinin 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 yöntem kodu örneğinde, UpdateConditionalFormatRuleRequest öğesinin 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 isteğin taşıma işlemi, ikinci istek başlamadan tamamlandığı için ikinci istek, orijinal olarak 1 dizininde olan kuralın yerini alı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": [
    {
      "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
              }
            }
          }
        }
      }
    }
  ]
}