การจัดรูปแบบตามเงื่อนไข

คุณสามารถใช้ Google Sheets API สร้างและอัปเดตกฎการจัดรูปแบบตามเงื่อนไขในสเปรดชีต คุณสามารถควบคุมการจัดรูปแบบบางประเภท (ตัวหนา ตัวเอียง ขีดทับ สีพื้นหน้า และสีพื้นหลัง) ผ่านการจัดรูปแบบตามเงื่อนไขเท่านั้น ตัวอย่างในหน้านี้จะแสดงวิธีดำเนินการจัดรูปแบบตามเงื่อนไขทั่วไปด้วย Sheets API

ตัวอย่างเหล่านี้จะแสดงเป็นคำขอ HTTP เพื่อเป็นกลางทางภาษา ดูวิธีการอัปเดตแบบกลุ่มในภาษาต่างๆ โดยใช้ไลบรารีของไคลเอ็นต์ Google API ได้ที่อัปเดตสเปรดชีต

ในตัวอย่างต่อไปนี้ ตัวยึดตำแหน่ง SPREADSHEET_ID และ SHEET_ID ระบุตำแหน่งที่คุณจะระบุรหัสเหล่านั้น คุณดูรหัสของสเปรดชีตได้ใน URL ของสเปรดชีต คุณดูรหัสชีตได้โดยใช้เมธอด spreadsheets.get โดยจะระบุช่วงโดยใช้รูปแบบ A1 ช่วงตัวอย่างคือ Sheet1!A1:D5

เพิ่มการไล่ระดับสีตามเงื่อนไขในแถว

ตัวอย่างโค้ดเมธอด spreadsheets.batchUpdate ต่อไปนี้จะแสดงวิธีใช้ AddConditionalFormatRuleRequest เพื่อสร้างกฎการจัดรูปแบบตามเงื่อนไขใหม่สำหรับการไล่ระดับสีสำหรับแถว 10 และ 11 ของชีต กฎแรกจะระบุว่าเซลล์ในแถวนั้นตั้งค่าสีพื้นหลังตามค่า ค่าที่ต่ำที่สุดในแถวจะเป็นสีแดงเข้ม ส่วนค่าที่สูงที่สุดจะเป็นสีเขียวสด สีของค่าอื่นๆ จะมีการประมาณค่าเอง กฎข้อที่ 2 ก็เช่นกัน แต่จะใช้ค่าตัวเลขที่เจาะจงจะกำหนดจุดสิ้นสุดการไล่ระดับสี (และสีที่ต่างกัน) คำขอใช้ 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 มีการตั้งค่า maxpoint เป็น 256 ค่าใดๆ ด้านบนจะมีสี maxpoint ดังนี้

เพิ่มผลการค้นหาสูตรอาหารรูปแบบไล่ระดับสี

เพิ่มกฎการจัดรูปแบบตามเงื่อนไขในชุดของช่วง

ตัวอย่างโค้ดเมธอด spreadsheets.batchUpdate ต่อไปนี้จะแสดงวิธีใช้ AddConditionalFormatRuleRequest เพื่อสร้างกฎการจัดรูปแบบตามเงื่อนไขใหม่สำหรับคอลัมน์ A และ C ของชีต กฎจะระบุว่าเซลล์ที่มีค่าไม่เกิน 10 มีสีพื้นหลังเปลี่ยนเป็นสีแดงเข้ม กฎจะแทรกที่ดัชนี 0 จึงมีลำดับความสำคัญเหนือกฎการจัดรูปแบบอื่นๆ คำขอใช้ ConditionType เป็น type สำหรับ BooleanRule

โปรโตคอลคำขอแสดงอยู่ด้านล่าง

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 ในชีต โดยอิงตามค่าวันที่และข้อความในเซลล์เหล่านั้น หากข้อความมีสตริง "ค่าใช้จ่าย" (ไม่คำนึงถึงตัวพิมพ์เล็กและตัวพิมพ์ใหญ่) กฎข้อแรกจะกำหนดข้อความในเซลล์เป็นตัวหนา หากเซลล์มีวันที่ที่เกิดขึ้นก่อนสัปดาห์ที่ผ่านมา กฎข้อที่ 2 จะตั้งค่าข้อความในเซลล์เป็นแบบตัวเอียงและเปลี่ยนเป็นสีน้ำเงิน คำขอใช้ ConditionType เป็น type สำหรับ BooleanRule

โปรโตคอลคำขอแสดงอยู่ด้านล่าง

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

หลังจากส่งคำขอแล้ว กฎรูปแบบที่ใช้จะอัปเดตชีต ในตัวอย่างนี้ วันที่ปัจจุบันคือ 26/9/2016

ผลลัพธ์ของสูตรอาหารในรูปแบบข้อความและวันที่ตามเงื่อนไข

เพิ่มกฎของสูตรที่กำหนดเองลงในช่วง

ตัวอย่างโค้ดเมธอด spreadsheets.batchUpdate ต่อไปนี้จะแสดงวิธีใช้ AddConditionalFormatRuleRequest เพื่อสร้างกฎการจัดรูปแบบตามเงื่อนไขใหม่สำหรับช่วง B5:B8 ในชีต โดยอิงตามสูตรที่กำหนดเอง กฎจะคำนวณผลคูณของเซลล์ในคอลัมน์ A และ B หากผลคูณมีค่ามากกว่า 120 ระบบจะตั้งค่าข้อความเซลล์เป็นตัวหนาและตัวเอียง คำขอใช้ ConditionType เป็น type สำหรับ BooleanRule

โปรโตคอลคำขอแสดงอยู่ด้านล่าง

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 เพื่อลบกฎการจัดรูปแบบตามเงื่อนไขที่มีดัชนี 0 ในชีตที่ระบุโดย SHEET_ID

โปรโตคอลคำขอแสดงอยู่ด้านล่าง

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 เป็น type สำหรับ 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
              }
            }
          }
        },
        ...
      ]
    }
  ]
}

อัปเดตกฎการจัดรูปแบบตามเงื่อนไขหรือลำดับความสำคัญ

ตัวอย่างโค้ดเมธอด spreadsheets.batchUpdate ต่อไปนี้จะแสดงวิธีใช้ UpdateConditionalFormatRuleRequest กับคำขอหลายรายการ คำขอแรกย้ายกฎรูปแบบตามเงื่อนไขที่มีอยู่ไปยังดัชนีที่สูงขึ้น (จาก 0 เป็น 2 โดยลดลำดับความสำคัญ) คำขอที่ 2 จะแทนที่กฎการจัดรูปแบบตามเงื่อนไขที่ดัชนี 0 ด้วยกฎใหม่ที่จัดรูปแบบเซลล์ที่มีข้อความที่ระบุ ("ค่าใช้จ่ายทั้งหมด") ในช่วง A1:D5 การย้ายคำขอแรกจะเสร็จสมบูรณ์ก่อนที่คำขอที่ 2 จะเริ่มขึ้น ดังนั้นคำขอที่ 2 จึงแทนที่กฎที่เดิมอยู่ที่ดัชนี 1 คำขอใช้ ConditionType เป็นtype สำหรับ BooleanRule

โปรโตคอลคำขอแสดงอยู่ด้านล่าง

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