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

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