條件式格式設定

透過 GoogleSheet API,您可以在試算表中建立及更新條件式格式設定規則。只有特定格式類型 (粗體、斜體、刪除線、前景顏色和背景顏色) 才能透過條件式格式設定來控制。本頁面的範例說明如何使用 Sheet API 達成常見的條件式格式設定作業。

這些範例是以 HTTP 要求形式呈現為中立語言。如要瞭解如何使用 Google API 用戶端程式庫以不同語言實作批次更新,請參閱「更新試算表」。

在這些範例中,預留位置 SPREADSHEET_IDSHEET_ID 代表您提供這些 ID 的位置。你可以在試算表網址中找到試算表 ID。您可以使用 spreadsheets.get 方法取得工作表 ID。範圍是使用 A1 標記法指定。例如 Sheet1!A1:D5。

為一列新增條件式顏色漸層

下列 spreadsheets.batchUpdate 方法程式碼範例說明如何使用 AddConditionalFormatRuleRequest,為工作表中的第 10 和第 11 列建立新的漸層條件式格式設定規則。第一條規則表示該列的儲存格會依據值設定其背景顏色。資料列中的最小值為深紅色,而最高值則為亮綠色。其他值的顏色則會內插第二項規則亦執行相同,但以特定數值來決定漸層端點 (與不同顏色)。要求會使用 sheets.InterpolationPointType 做為 type

要求通訊協定如下所示。

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

要求之後,套用的格式規則就會更新工作表。由於第 11 列的漸層最大點設為 256,因此上方的任何值都會獲派最大點顏色:

新增漸層格式方案結果

為一組範圍新增條件式格式設定規則

下列 spreadsheets.batchUpdate 方法程式碼範例說明如何使用 AddConditionalFormatRuleRequest,為工作表 A 和 C 的資料欄建立新的條件式格式設定規則。此規則規定,值 10 以下的儲存格的背景顏色已變更為深紅色。規則會在索引 0 插入,因此優先順序高於其他格式規則。要求會使用 ConditionType 做為 BooleanRuletype

要求通訊協定如下所示。

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

要求之後,套用的格式規則會更新工作表:

新增條件式格式的食譜結果

為範圍新增日期和文字條件式格式設定規則

下列 spreadsheets.batchUpdate 方法程式碼範例說明如何使用 AddConditionalFormatRuleRequest,根據這些儲存格中的日期和文字值,為工作表中的 A1:D5 範圍建立新的條件式格式設定規則。如果文字包含「Cost」字串 (不區分大小寫),第一個規則會將儲存格文字設為粗體。如果儲存格含有過去一週的日期,第二項規則會將儲存格文字設為斜體,並將該文字設為藍色。要求會使用 ConditionType 做為 BooleanRuletype

要求通訊協定如下所示。

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

要求之後,套用的格式規則就會更新工作表。在這個範例中,目前日期是 2016 年 9 月 26 日:

文字和日期條件式格式的食譜結果

為範圍新增自訂公式規則

下列 spreadsheets.batchUpdate 方法程式碼範例說明如何使用 AddConditionalFormatRuleRequest,根據自訂公式,為工作表中的 B5:B8 範圍建立新的條件式格式設定規則。這項規則會計算 A 欄和 B 欄中儲存格的乘積。如果產品大於 120,儲存格文字會設為粗體和斜體。要求會使用 ConditionType 做為 BooleanRuletype

要求通訊協定如下所示。

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

要求之後,套用的格式規則會更新工作表:

自訂條件式格式食譜結果

刪除條件式格式設定規則

以下 spreadsheets.batchUpdate 方法程式碼範例說明如何使用 DeleteConditionalFormatRuleRequest,刪除 SHEET_ID 指定的工作表中索引為 0 的條件式格式設定規則。

要求通訊協定如下所示。

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

閱讀條件式格式設定規則清單

下列 spreadsheets.get 方法程式碼範例說明如何取得試算表中每張工作表的所有條件式格式設定規則清單 (SHEET_ID),以及所有條件式格式設定規則的清單。fields 查詢參數會決定要傳回哪些資料。

要求通訊協定如下所示。

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

回應由 Spreadsheet 資源組成,其中包含 Sheet 物件陣列,每個物件各有 SheetProperties 元素和包含 ConditionalFormatRule 元素的陣列。如果特定回應欄位設為預設值,回應會省略該欄位。要求會使用 ConditionType 做為 BooleanRuletype

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

更新條件式格式設定規則或其優先順序

下列 spreadsheets.batchUpdate 方法程式碼範例說明如何將 UpdateConditionalFormatRuleRequest 用於多個要求。第一個要求會將現有的條件式格式規則移至較高的索引 (從 02,以降低其優先順序)。第二個要求會以新規則取代索引 0 中的條件式格式設定規則,該規則會將包含 A1:D5 範圍內指定文字 (「總費用」) 的儲存格格式化。第一個要求的移動作業會在第二個開始之前完成,因此第二個要求會取代原本位於索引 1 的規則。要求會使用 ConditionType 做為 BooleanRuletype

要求通訊協定如下所示。

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