Định dạng có điều kiện

API Google Trang tính cho phép bạn tạo và cập nhật các quy tắc định dạng có điều kiện trong bảng tính. Chỉ một số loại định dạng nhất định (in đậm, in nghiêng, gạch ngang chữ, màu nền trước và màu nền) có thể được kiểm soát thông qua các điều kiện . Các ví dụ trên trang này minh hoạ cách đạt được các thao tác định dạng có điều kiện bằng API Trang tính.

Những ví dụ này được trình bày dưới dạng yêu cầu HTTP nhằm đảm bảo trung lập về ngôn ngữ. Để tìm hiểu cách triển khai việc cập nhật theo lô bằng nhiều ngôn ngữ bằng Google API thư viện ứng dụng, hãy xem phần Cập nhật bảng tính.

Trong những ví dụ này, phần giữ chỗ SPREADSHEET_IDSHEET_ID cho biết nơi bạn sẽ cung cấp các mã đó. Bạn có thể tìm thấy bảng tính Mã nhận dạng trong URL của bảng tính. Bạn có thể tải mã trang tính bằng cách sử dụng spreadsheets.get. Chiến lược phát hành đĩa đơn dải ô được chỉ định bằng ký hiệu A1. Một dải ô mẫu là Sheet1!A1:D5.

Thêm hiệu ứng chuyển màu có điều kiện trên một hàng

Nội dung sau đây spreadsheets.batchUpdate mã mẫu cho biết cách sử dụng AddConditionalFormatRuleRequest để thiết lập quy tắc định dạng có điều kiện chuyển màu mới cho hàng 10 và 11 của trang tính. Quy tắc đầu tiên nêu rõ rằng các ô trong hàng đó có màu nền được đặt theo giá trị của chúng. Giá trị thấp nhất trong hàng là màu đỏ đậm, trong khi giá trị cao nhất là màu xanh lục sáng. Màu của các giá trị khác là nội suy. Quy tắc thứ hai cũng tương tự, nhưng với các giá trị số cụ thể xác định các điểm cuối gradient (và các màu khác nhau). Yêu cầu sử dụng sheets.InterpolationPointType dưới dạng type.

Giao thức yêu cầu được trình bày dưới đây.

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

Sau khi yêu cầu, quy tắc định dạng được áp dụng sẽ cập nhật trang tính. Vì độ dốc trong hàng 11 có điểm cực đại được đặt thành 256, mọi giá trị cao hơn điểm đó đều có điểm tối đa màu:

Thêm kết quả công thức có định dạng chuyển màu

Thêm quy tắc định dạng có điều kiện vào một tập hợp dải ô

Nội dung sau đây spreadsheets.batchUpdate mã mẫu cho biết cách sử dụng AddConditionalFormatRuleRequest để thiết lập quy tắc định dạng có điều kiện mới cho cột A và C của trang tính. Quy tắc nêu rõ rằng các ô có giá trị từ 10 trở xuống sẽ có nền riêng màu đã đổi thành đỏ sẫm. Quy tắc này được chèn tại chỉ mục 0, nên quy tắc này sẽ nhận so với các quy tắc định dạng khác. Yêu cầu sử dụng ConditionTypetype cho BooleanRule.

Giao thức yêu cầu được trình bày dưới đây.

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

Sau khi yêu cầu, quy tắc định dạng được áp dụng sẽ cập nhật trang tính:

Thêm kết quả công thức nấu ăn theo định dạng có điều kiện

Thêm quy tắc định dạng có điều kiện cho ngày và văn bản vào một dải ô

Nội dung sau đây spreadsheets.batchUpdate mã mẫu cho biết cách sử dụng AddConditionalFormatRuleRequest để thiết lập các quy tắc định dạng có điều kiện mới cho dải ô A1:D5 trong một trang tính, dựa trên các giá trị ngày và văn bản trong các ô đó. Nếu văn bản chứa chuỗi "Chi phí" (không phân biệt chữ hoa chữ thường), quy tắc đầu tiên đặt văn bản trong ô thành in đậm. Nếu ô chứa ngày xảy ra trước tuần trước, quy tắc thứ hai đặt giá trị văn bản trong ô dưới dạng in nghiêng và tô màu xanh lam. Yêu cầu sử dụng ConditionTypetype cho BooleanRule.

Giao thức yêu cầu được trình bày dưới đây.

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

Sau khi yêu cầu, quy tắc định dạng được áp dụng sẽ cập nhật trang tính. Trong ví dụ này, hiện tại là 26/9/2016:

Kết quả công thức nấu ăn có điều kiện dạng văn bản và ngày

Thêm quy tắc công thức tuỳ chỉnh vào dải ô

Nội dung sau đây spreadsheets.batchUpdate mã mẫu cho biết cách sử dụng AddConditionalFormatRuleRequest để thiết lập quy tắc định dạng có điều kiện mới cho dải ô B5:B8 trong một trang tính, dựa trên một công thức tuỳ chỉnh. Quy tắc tính tích của ô trong cột A và B. Nếu tích lớn hơn 120, văn bản ô sẽ được đặt thành kiểu in đậm và in nghiêng. Yêu cầu sử dụng ConditionTypetype cho BooleanRule.

Giao thức yêu cầu được trình bày dưới đây.

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

Sau khi yêu cầu, quy tắc định dạng được áp dụng sẽ cập nhật trang tính:

Kết quả công thức nấu ăn theo định dạng có điều kiện tuỳ chỉnh

Xoá quy tắc định dạng có điều kiện

Nội dung sau đây spreadsheets.batchUpdate mã mẫu cho biết cách sử dụng DeleteConditionalFormatRuleRequest để xoá quy tắc định dạng có điều kiện có chỉ mục 0 trong trang tính được chỉ định của SHEET_ID.

Giao thức yêu cầu được trình bày dưới đây.

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

Đọc danh sách quy tắc định dạng có điều kiện

Nội dung sau đây Mã phương thức spreadsheets.get mẫu cho biết cách lấy tiêu đề, SHEET_ID và danh sách tất cả quy tắc định dạng có điều kiện cho mỗi trang tính trong bảng tính. Truy vấn fields xác định dữ liệu nào cần trả về.

Giao thức yêu cầu được trình bày dưới đây.

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

Phản hồi bao gồm Tài nguyên Spreadsheet chứa một mảng Sheet mỗi đối tượng có một SheetProperties và một mảng ConditionalFormatRule phần tử. Nếu một trường phản hồi nhất định được đặt thành giá trị mặc định, trường đó sẽ bị bỏ qua khỏi câu trả lời. Yêu cầu sử dụng ConditionTypetype cho BooleanRule.

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

Cập nhật quy tắc định dạng có điều kiện hoặc mức độ ưu tiên của quy tắc

Nội dung sau đây spreadsheets.batchUpdate mã mẫu cho biết cách sử dụng UpdateConditionalFormatRuleRequest có nhiều yêu cầu. Yêu cầu đầu tiên di chuyển định dạng có điều kiện hiện có quy tắc lên chỉ mục cao hơn (từ 0 xuống 2, giảm mức độ ưu tiên của quy tắc). Thứ hai yêu cầu thay thế quy tắc định dạng có điều kiện tại chỉ mục 0 bằng một quy tắc mới định dạng các ô có chứa văn bản chính xác được chỉ định ("Tổng chi phí") trong Phạm vi A1:D5. Quá trình di chuyển của yêu cầu đầu tiên được hoàn tất trước khi yêu cầu thứ hai bắt đầu, do đó yêu cầu thứ hai sẽ thay thế quy tắc ban đầu tại chỉ mục 1. Chiến lược phát hành đĩa đơn yêu cầu sử dụng ConditionTypetype cho BooleanRule.

Giao thức yêu cầu được trình bày dưới đây.

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