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

Google ชีต 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
              }
            }
          }
        }
      }
    }
  ]
}