Koşullu biçimlendirme

Google Sheets API, e-tablolarda koşullu biçimlendirme kuralları oluşturmanıza ve bunları 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 sayfadaki örneklerde, E-Tablolar API'yle sık kullanılan koşullu biçimlendirme işlemlerinin nasıl gerçekleştirileceği gösterilmektedir.

Bu örnekler, dilsiz olması için HTTP istekleri olarak sunulur. Google API istemci kitaplıklarını kullanarak farklı dillerde toplu güncelleme uygulamayı öğrenmek için E-tabloları güncelleme bölümüne bakın.

Bu örneklerde SPREADSHEET_ID ve SHEET_ID yer tutucuları, bu kimlikleri nereye gireceğinizi belirtir. E-tablo kimliğini e-tablonun URL'sinde bulabilirsiniz. Sayfa kimliğini spreadsheets.get yöntemini kullanarak alabilirsiniz. Aralıklar, A1 gösterimi kullanılarak belirtilir. Sayfa1!A1:D5 örnek aralıktır.

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 renk geçişi koşullu biçimlendirme kuralları oluşturmak üzere AddConditionalFormatRuleRequest yönteminin 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 parlak yeşil renktedir. Diğer değerlerin rengi için interpolasyon yapılır. İkinci kural da aynı şeyi yapar, ancak gradyan uç noktalarını (ve farklı renkleri) belirleyen belirli sayısal değerlerle çalışır. İstek, type olarak sheets.InterpolationPointType öğesini 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
      }
    },
  ]
}

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

Gradyan biçimi tarif sonucunu ekle

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 az değere sahip hücrelerin arka plan renklerinin koyu kırmızıya dönüşeceğini belirtir. Kural, 0. dizine eklendiğinden diğer biçimlendirme kurallarına göre önceliklidir. İstek, BooleanRule için type olarak ConditionType öğesini 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
      }
    }
  ]
}

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

Koşullu biçimli tarif sonucu ekle

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

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, bir sayfada A1:D5 aralığı için bu hücrelerdeki tarih ve metin değerlerini temel alan yeni koşullu biçimlendirme kuralları oluşturmak üzere AddConditionalFormatRuleRequest özelliğinin 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 önce gelen bir tarih içeriyorsa ikinci kural, hücre metnini italik olarak ayarlar ve metni mavi olarak ayarlar. İstek, BooleanRule için type olarak ConditionType öğesini 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
      }
    }
  ]
}

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

Metin ve tarih koşullu biçimi tarif sonucu

Aralığa özel formül kuralı ekleme

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, bir sayfada B5:B8 aralığı için özel bir formüle dayalı yeni bir koşullu biçimlendirme kuralı oluşturmak üzere AddConditionalFormatRuleRequest özelliğinin nasıl kullanılacağı gösterilmektedir. Kural, A ve B sütunlarındaki hücrenin çarpımını hesaplar. Çarpım 120'den büyükse hücre metni kalın ve italik olarak ayarlanır. İstek, BooleanRule için type olarak ConditionType öğesini 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
      }
    }
  ]
}

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

Özel koşullu biçim tarif sonucu

Koşullu biçimlendirme kuralını silme

Aşağıdaki spreadsheets.batchUpdate yöntem kodu örneğinde, SHEET_ID tarafından belirtilen sayfadaki 0 dizinini içeren koşullu biçimlendirme kuralını silmek için DeleteConditionalFormatRuleRequest özelliğinin 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ı listesini okuma

Aşağıdaki spreadsheets.get yöntem kodu örneğinde, e-tablodaki her sayfa için başlık, SHEET_ID ve tüm koşullu biçimlendirme kuralları listesinin nasıl alınacağı gösterilmektedir. fields sorgu parametresi, hangi verilerin döndürüleceğini 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 öğe dizisine sahip Sheet nesne dizisi 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 öğesini 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'in birden çok istekle nasıl kullanılacağı gösterilmektedir. İlk istek, mevcut bir koşullu biçim kuralını daha yüksek bir dizine taşır (0 değerinden 2 değerine, bu da önceliğinin azalmasına neden olur). İkinci istek, 0 dizinindeki koşullu biçimlendirme kuralını, A1:D5 aralığında belirtilen tam metni ("Toplam Maliyet") içeren hücreleri biçimlendiren yeni bir kuralla değiştirir. Birinci isteğin taşınması, ikincisi başlamadan önce tamamlanır. Bu nedenle ikinci istek, başlangıçta 1 dizininde olan kuralın yerini alır. İstek, BooleanRule için type olarak ConditionType öğesini 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
              }
            }
          }
        }
      }
    }
  ]
}