सशर्त फ़ॉर्मेटिंग

Google Sheets API की मदद से, स्प्रेडशीट में शर्त के साथ फ़ॉर्मैटिंग के नियम बनाए और अपडेट किए जा सकते हैं. कंडिशनल फ़ॉर्मैटिंग की मदद से, सिर्फ़ कुछ तरह के फ़ॉर्मैटिंग टाइप (बोल्ड, इटैलिक, स्ट्राइकथ्रू, फ़ोरग्राउंड का रंग, और बैकग्राउंड का रंग) कंट्रोल किए जा सकते हैं. इस पेज पर दिए गए उदाहरणों से पता चलता है कि Sheets API की मदद से, सामान्य तौर पर इस्तेमाल होने वाली शर्तों के आधार पर फ़ॉर्मैटिंग कैसे की जाती है.

इन उदाहरणों को एचटीटीपी अनुरोधों के तौर पर दिखाया गया है, ताकि ये किसी भी भाषा में इस्तेमाल किए जा सकें. Google API क्लाइंट लाइब्रेरी का इस्तेमाल करके, अलग-अलग भाषाओं में एक साथ कई बदलाव करने का तरीका जानने के लिए, स्प्रेडशीट अपडेट करना लेख पढ़ें.

इन उदाहरणों में, प्लेसहोल्डर SPREADSHEET_ID और SHEET_ID से पता चलता है कि आपको ये आईडी कहां देने हैं. स्प्रेडशीट के यूआरएल में, स्प्रेडशीट आईडी देखा जा सकता है. spreadsheets.get तरीके का इस्तेमाल करके, शीट आईडी पाया जा सकता है. रेंज को A1 नोटेशन का इस्तेमाल करके तय किया जाता है. उदाहरण के लिए, रेंज Sheet1!A1:D5 है.

किसी लाइन में कंडीशनल कलर ग्रेडिएंट जोड़ना

यहां spreadsheets.batchUpdate तरीके का कोड सैंपल दिया गया है. इसमें बताया गया है कि किसी शीट की 10वीं और 11वीं लाइन के लिए, ग्रेडिएंट वाली नई शर्तिया फ़ॉर्मैटिंग के नियम बनाने के लिए AddConditionalFormatRuleRequest का इस्तेमाल कैसे किया जाता है. पहले नियम के मुताबिक, उस लाइन की सेल के बैकग्राउंड के रंग, उनकी वैल्यू के हिसाब से सेट किए गए हैं. लाइन में सबसे कम वैल्यू को गहरे लाल रंग में दिखाया गया है, जबकि सबसे ज़्यादा वैल्यू को हल्के हरे रंग में दिखाया गया है. अन्य वैल्यू के रंग इंटरपोलेट किए जाते हैं. दूसरा नियम भी यही काम करता है. हालांकि, इसमें ग्रेडिएंट के एंडपॉइंट (और अलग-अलग रंग) तय करने के लिए, खास संख्या वाली वैल्यू का इस्तेमाल किया जाता है. इस अनुरोध में, type के तौर पर sheets.InterpolationPointType का इस्तेमाल किया गया है.

अनुरोध प्रोटोकॉल यहां दिखाया गया है.

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 तरीके के कोड सैंपल में, यह दिखाया गया है कि किसी शीट के कॉलम A और C के लिए, शर्त के साथ फ़ॉर्मैटिंग का नया नियम बनाने के लिए AddConditionalFormatRuleRequest का इस्तेमाल कैसे किया जाता है. इस नियम के मुताबिक, जिन सेल की वैल्यू 10 या इससे कम है उनके बैकग्राउंड का रंग बदलकर गहरा लाल कर दिया गया है. इस नियम को इंडेक्स 0 पर डाला जाता है. इसलिए, इसे फ़ॉर्मैट करने के अन्य नियमों से ज़्यादा प्राथमिकता मिलती है. इस अनुरोध में, BooleanRule के लिए type के तौर पर ConditionType का इस्तेमाल किया गया है.

अनुरोध प्रोटोकॉल यहां दिखाया गया है.

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 तरीके के कोड सैंपल में बताया गया है कि किसी शीट में A1:D5 रेंज के लिए, शर्त के हिसाब से फ़ॉर्मैटिंग के नए नियम कैसे बनाए जाएं. ये नियम, उन सेल में मौजूद तारीख और टेक्स्ट वैल्यू के आधार पर बनाए जाते हैं.AddConditionalFormatRuleRequest अगर टेक्स्ट में "Cost" स्ट्रिंग (केस-इनसेंसिटिव) मौजूद है, तो पहला नियम सेल के टेक्स्ट को बोल्ड के तौर पर सेट करता है. अगर सेल में पिछले हफ़्ते से पहले की कोई तारीख है, तो दूसरा नियम सेल के टेक्स्ट को इटैलिक में सेट करता है और उसका रंग नीला कर देता है. इस अनुरोध में, BooleanRule के लिए type के तौर पर ConditionType का इस्तेमाल किया गया है.

अनुरोध प्रोटोकॉल यहां दिखाया गया है.

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 से ज़्यादा है, तो सेल में मौजूद टेक्स्ट को बोल्ड और इटैलिक में सेट किया जाता है. इस अनुरोध में, BooleanRule के लिए type के तौर पर ConditionType का इस्तेमाल किया गया है.

अनुरोध प्रोटोकॉल यहां दिखाया गया है.

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 तरीके का कोड सैंपल दिया गया है. इसमें बताया गया है कि SHEET_ID में दी गई शीट में, इंडेक्स 0 वाले शर्तिया फ़ॉर्मैटिंग के नियम को मिटाने के लिए, DeleteConditionalFormatRuleRequest का इस्तेमाल कैसे किया जाता है.

अनुरोध प्रोटोकॉल यहां दिखाया गया है.

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 एलिमेंट की कैटगरी होती है. अगर किसी जवाब वाले फ़ील्ड को डिफ़ॉल्ट वैल्यू पर सेट किया जाता है, तो उसे जवाब से हटा दिया जाता है. इस अनुरोध में, BooleanRule के लिए type के तौर पर ConditionType का इस्तेमाल किया गया है.

{
  "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) पर ले जाया जाता है. इससे उसकी प्राथमिकता कम हो जाती है. दूसरे अनुरोध में, इंडेक्स 0 पर मौजूद कंडीशनल फ़ॉर्मैटिंग के नियम को एक नए नियम से बदल दिया जाता है. यह नियम, A1:D5 रेंज में मौजूद उन सेल को फ़ॉर्मैट करता है जिनमें बताया गया टेक्स्ट ("कुल लागत") मौजूद है. पहले अनुरोध का बदलाव पूरा होने के बाद ही दूसरा अनुरोध शुरू होता है. इसलिए, दूसरा अनुरोध उस नियम को बदल रहा है जो मूल रूप से इंडेक्स 1 पर था. अनुरोध में, BooleanRule के लिए type के तौर पर ConditionType का इस्तेमाल किया गया है.

अनुरोध प्रोटोकॉल यहां दिखाया गया है.

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