Koşullu biçimlendirme

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

Bu örnekler, dilden bağımsız olması için HTTP istekleri olarak sunulur. Google API istemci kitaplıklarını kullanarak farklı dillerde toplu güncelleme işlemini nasıl uygulayacağınızı öğ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. Sayfa kimliğini spreadsheets.get yöntemini kullanarak alabilirsiniz. Aralıklar A1 gösterimi kullanılarak belirtilir. Örnek bir 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 gradyan koşullu biçimlendirme kuralları oluşturmak üzere AddConditionalFormatRuleRequest nasıl kullanılacağı gösterilmektedir. İlk kural, o 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 parlak yeşil renkte gösterilir. Diğer değerlerin rengi enterpolasyonla belirlenir. İkinci kural da aynı işlemi yapar ancak gradyan uç noktalarını (ve farklı renkleri) belirleyen belirli sayısal değerlerle. İstek, type olarak sheets.InterpolationPointType kullanıyor.

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

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

İstekten sonra, uygulanan biçim kuralı sayfayı günceller. 11. satırdaki renk geçişinin maksimum nokta değeri 256 olarak ayarlandığından, bu değerin üzerindeki tüm değerler maksimum nokta rengine sahiptir:

Gradyan biçimi tarifi sonucu ekleme

Bir dizi aralığa 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 yönteminin nasıl kullanılacağı gösterilmektedir. Kurala göre, değeri 10 veya daha az olan hücrelerin arka plan rengi koyu kırmızı olarak değiştirilir. Kural, dizin 0'a eklenir. Bu nedenle, diğer biçimlendirme kurallarına göre önceliklidir. İstek, BooleanRule için type olarak ConditionType kullanıyor.

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

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

İstekten sonra, uygulanan biçim kuralı sayfayı günceller:

Koşullu biçimlendirme tarifi sonucu ekleme

Bir aralığa tarih ve metin koşullu biçimlendirme kuralları ekleme

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, bir sayfadaki A1:D5 aralığı için bu hücrelerdeki tarih ve metin değerlerine göre yeni koşullu biçimlendirme kuralları oluşturmak üzere AddConditionalFormatRuleRequest nasıl kullanılacağı gösterilmektedir. Metin, "Cost" dizesini (büyük/küçük harfe duyarsız) içeriyorsa ilk kural, hücre metnini kalın olarak ayarlar. Hücrede geçen haftadan önceki bir tarih varsa ikinci kural, hücre metnini italik olarak ayarlar ve mavi renkte gösterir. İstek, BooleanRule için type olarak ConditionType kullanıyor.

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

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

İstekten sonra, uygulanan biçim kuralı sayfayı günceller. Bu örnekte, mevcut tarih 26.09.2016'dır:

Metin ve tarih koşullu biçim tarifi sonucu

Bir aralığa özel formül kuralı ekleme

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, bir sayfadaki B5:B8 aralığı için özel bir formüle dayalı olarak yeni bir koşullu biçimlendirme kuralı oluşturmak üzere AddConditionalFormatRuleRequest yönteminin 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 kullanıyor.

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

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

İstekten sonra, uygulanan biçim 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 kodu örneğinde, SHEET_ID ile belirtilen sayfada 0 dizinli koşullu biçimlendirme kuralını silmek için DeleteConditionalFormatRuleRequest yönteminin nasıl kullanılacağı gösterilmektedir.

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

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

Koşullu biçimlendirme kuralları 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 listesinin nasıl alınacağı gösterilmektedir. fields Sorgu parametresi, hangi verilerin döndürüleceğini belirler.

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

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

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

{
  "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 yönteminin birden fazla istekle nasıl kullanılacağı gösterilmektedir. İlk istek, mevcut bir koşullu biçimlendirme kuralını daha yüksek bir dizine taşır (0'dan 2'ye, önceliğini azaltarak). İkinci istek, 0 dizinindeki koşullu biçimlendirme kuralını, A1:D5 aralığında belirtilen metni ("Toplam Maliyet") içeren hücreleri biçimlendiren yeni bir kural ile değiştirir. İlk isteğin taşıma işlemi tamamlandıktan sonra ikinci istek başlar. Bu nedenle, ikinci istek başlangıçta 1 dizininde bulunan kuralın yerini alır. İstek, BooleanRule için type olarak ConditionType kullanıyor.

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

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