डेवलपर मेटाडेटा पढ़ें और लिखें

डेवलपर मेटाडेटा सुविधा की मदद से, स्प्रेडशीट में मौजूद अलग-अलग इकाइयों और जगहों के साथ मेटाडेटा जोड़ा जा सकता है. इसके बाद, इस मेटाडेटा को क्वेरी किया जा सकता है. साथ ही, इसका इस्तेमाल उन ऑब्जेक्ट को ढूंढने के लिए किया जा सकता है जिनसे यह जुड़ा है.

मेटाडेटा को पंक्तियों, कॉलम, शीट या स्प्रेडशीट से जोड़ा जा सकता है.

डेवलपर मेटाडेटा की मदद से, ये कार्रवाइयां की जा सकती हैं:

  • स्प्रेडशीट में मौजूद अलग-अलग इकाइयों और जगहों के साथ कोई भी डेटा जोड़ें—उदाहरण के लिए, totals को कॉलम D के साथ या responseId = 1234 को लाइन 7 के साथ जोड़ें.

  • किसी खास मेटाडेटा कुंजी या एट्रिब्यूट से जुड़ी सभी जगहों और डेटा का पता लगाएं—उदाहरण के लिए, कॉलम D से जुड़ी totals कुंजी दी गई है या responseId दिया गया है, तो responseId मेटाडेटा और उससे जुड़ी मेटाडेटा वैल्यू वाली सभी लाइनें दिखाएं.

  • किसी इकाई या जगह से जुड़ा सारा डेटा ढूंढना—उदाहरण के लिए, कॉलम D में दी गई जगह से जुड़ा सारा मेटाडेटा दिखाओ.

  • किसी जगह पर मौजूद वैल्यू को उससे जुड़े मेटाडेटा के हिसाब से वापस पाना—उदाहरण के लिए, totals को देखते हुए, उससे जुड़े कॉलम या लाइन में मौजूद वैल्यू का प्रतिनिधित्व वापस पाएं या summary को देखते हुए, उससे जुड़े शीट संसाधन का प्रतिनिधित्व वापस पाएं.

  • उस जगह के मेटाडेटा की जानकारी देकर, किसी जगह की वैल्यू अपडेट करें—उदाहरण के लिए, A1 नोटेशन का इस्तेमाल करके, किसी लाइन में मौजूद वैल्यू अपडेट करने के बजाय, मेटाडेटा आईडी की जानकारी देकर वैल्यू अपडेट करें.

मेटाडेटा को पढ़ने और लिखने की अनुमति

spreadsheets.developerMetadata संसाधन, स्प्रेडशीट में किसी जगह या ऑब्जेक्ट से जुड़े डेवलपर मेटाडेटा का ऐक्सेस देता है.

डेवलपर मेटाडेटा के बारे में जानकारी

इस सेक्शन में, डेवलपर मेटाडेटा के कुछ मुख्य पहलुओं के बारे में बताया गया है. Sheets API का इस्तेमाल करते समय, आपको इन पहलुओं पर ध्यान देना चाहिए.

टैग के तौर पर मेटाडेटा

डेवलपर मेटाडेटा का एक इस्तेमाल टैग है. यह सिर्फ़ एक कुंजी और जगह का इस्तेमाल करके, स्प्रेडशीट में किसी जगह का नाम बताता है. उदाहरण के लिए, किसी शीट में मौजूद किसी खास लाइन के साथ headerRow या किसी खास कॉलम के साथ totals को जोड़ा जा सकता है. टैग का इस्तेमाल करके, स्प्रेडशीट के कुछ हिस्सों को तीसरे पक्ष के टूल या डेटाबेस में मौजूद फ़ील्ड से सिमैंटिक तौर पर बाइंड किया जा सकता है. इससे स्प्रेडशीट में किए गए बदलावों से, आपका ऐप्लिकेशन काम करना बंद नहीं करेगा.

मेटाडेटा को प्रॉपर्टी के तौर पर इस्तेमाल करना

कुंजी, जगह, और वैल्यू तय करके बनाया गया मेटाडेटा, शीट में उस जगह से जुड़े की-वैल्यू पेयर के तौर पर काम करता है. उदाहरण के लिए, इन्हें जोड़ा जा सकता है:

  • लाइन के साथ formResponseId = resp123
  • lastUpdated = 1477369882 कॉलम के साथ.

इसकी मदद से, स्प्रेडशीट में किसी खास इलाके या डेटा से जुड़ी कस्टम नाम वाली प्रॉपर्टी को सेव और ऐक्सेस किया जा सकता है.

प्रोजेक्ट और दस्तावेज़ के लिए दिखने वाला मेटाडेटा

किसी डेवलपर प्रोजेक्ट को दूसरे प्रोजेक्ट के मेटाडेटा में बदलाव करने से रोकने के लिए, मेटाडेटा की visibility सेटिंग के दो विकल्प उपलब्ध हैं: project और document. Sheets API का इस्तेमाल करके, प्रोजेक्ट का मेटाडेटा सिर्फ़ उस डेवलपर प्रोजेक्ट से देखा और ऐक्सेस किया जा सकता है जिसने उसे बनाया है. दस्तावेज़ के मेटाडेटा को ऐसे किसी भी डेवलपर प्रोजेक्ट से ऐक्सेस किया जा सकता है जिसके पास दस्तावेज़ का ऐक्सेस हो.

ऐसी क्वेरी जिनमें साफ़ तौर पर यह नहीं बताया गया है कि डेवलपर मेटाडेटा को कौन देख सकता है. इनके लिए, अनुरोध करने वाले डेवलपर प्रोजेक्ट के लिए, क्वेरी से मेल खाने वाले दस्तावेज़ का मेटाडेटा और क्वेरी से मेल खाने वाले प्रोजेक्ट का मेटाडेटा दिखाया जाता है.

खासियत

मेटाडेटा कुंजियां अलग-अलग होना ज़रूरी नहीं है, लेकिन metadataId अलग-अलग होना चाहिए. मेटाडेटा बनाते समय, अगर आईडी फ़ील्ड की वैल्यू नहीं दी जाती है, तो API अपने-आप एक आईडी असाइन कर देता है. इस आईडी का इस्तेमाल, मेटाडेटा की पहचान करने के लिए किया जा सकता है. वहीं, कुंजियों और अन्य एट्रिब्यूट का इस्तेमाल, मेटाडेटा के सेट की पहचान करने के लिए किया जा सकता है.

मेटाडेटा बनाना

मेटाडेटा बनाने के लिए, batchUpdate तरीके का इस्तेमाल करें. साथ ही, metadataKey, location, और visibility के साथ createDeveloperMetadataRequest उपलब्ध कराएं. आपके पास metadataValue या साफ़ तौर पर metadataId तय करने का विकल्प होता है.

अगर आपने ऐसा आईडी डाला है जिसका इस्तेमाल पहले से किया जा रहा है, तो अनुरोध पूरा नहीं होगा. अगर आपने आईडी नहीं दिया है, तो एपीआई एक आईडी असाइन करता है.

इस उदाहरण में, हमने अनुरोध में एक कुंजी, वैल्यू, और लाइन दी है. जवाब में, डेवलपर मेटाडेटा की ये वैल्यू और असाइन किया गया मेटाडेटा आईडी दिखता है.

अनुरोध

{
  "requests": [
    {
      "createDeveloperMetadata": {
        "developerMetadata": {
          "location": {
            "dimensionRange": {
              "sheetId": sheetId,
              "dimension": "ROWS",
              "startIndex": 6,
              "endIndex": 7
            }
          },
          "visibility": "DOCUMENT",
          "metadataKey": "Sales",
          "metadataValue": "2022"
        }
      }
    }
  ]
}

जवाब

{
  "spreadsheetId": spreadsheetId,
  "replies": [
    {
      "createDeveloperMetadata": {
        "developerMetadata": {
          "metadataId": metadataId,
          "metadataKey": "Sales",
          "metadataValue": "2022",
          "location": {
            "locationType": "ROW",
            "dimensionRange": {
              "sheetId": sheetId,
              "dimension": "ROWS",
              "startIndex": 6,
              "endIndex": 7
            }
          },
          "visibility": "DOCUMENT"
        }
      }
    }
  ]
}

मेटाडेटा का कोई एक आइटम पढ़ना

किसी एक डेवलपर मेटाडेटा को वापस पाने के लिए, spreadsheets.developerMetadata.get तरीके का इस्तेमाल करें. इसमें मेटाडेटा वाला spreadsheetId और डेवलपर मेटाडेटा का यूनीक metadataId तय करें.

अनुरोध

इस उदाहरण में, हमने अनुरोध में स्प्रेडशीट आईडी और मेटाडेटा आईडी दिया है. जवाब में, मेटाडेटा आईडी के लिए डेवलपर मेटाडेटा की वैल्यू दिखती हैं.

GET https://sheets.googleapis.com/v4/spreadsheets/spreadsheetId/developerMetadata/metadataId

जवाब

{
  "metadataId": metadataId,
  "metadataKey": "Sales",
  "metadataValue": "2022",
  "location": {
    "locationType": "ROW",
    "dimensionRange": {
      "sheetId": sheetId,
      "dimension": "ROWS",
      "startIndex": 6,
      "endIndex": 7
    }
  },
  "visibility": "DOCUMENT"
}

एक से ज़्यादा मेटाडेटा आइटम पढ़ने की अनुमति

डेवलपर मेटाडेटा के एक से ज़्यादा आइटम वापस पाने के लिए, spreadsheets.developerMetadata.search तरीके का इस्तेमाल करें. आपको एक ऐसा DataFilter तय करना होगा जो प्रॉपर्टी के किसी भी कॉम्बिनेशन पर मौजूद मेटाडेटा से मेल खाता हो. जैसे, कुंजी, वैल्यू, जगह या दिखने की स्थिति.

इस उदाहरण में, हमने अनुरोध में कई मेटाडेटा आईडी दिए हैं. जवाब में, हर मेटाडेटा आईडी के लिए डेवलपर मेटाडेटा वैल्यू मिलती हैं.

अनुरोध

{
  "dataFilters": [
    {
      "developerMetadataLookup": {
        "metadataId": metadataId
      }
    },
    {
      "developerMetadataLookup": {
        "metadataId": metadataId
      }
    }
  ]
}

जवाब

{
  "matchedDeveloperMetadata": [
    {
      "developerMetadata": {
        "metadataId": metadataId,
        "metadataKey": "Revenue",
        "metadataValue": "2022",
        "location": {
          "locationType": "SHEET",
          "sheetId": sheetId
        },
        "visibility": "DOCUMENT"
      },
      "dataFilters": [
        {
          "developerMetadataLookup": {
            "metadataId": metadataId
          }
        }
      ]
    },
    {
      "developerMetadata": {
        "metadataId": metadataId,
        "metadataKey": "Sales",
        "metadataValue": "2022",
        "location": {
          "locationType": "SHEET",
          "sheetId": sheetId
        },
        "visibility": "DOCUMENT"
      },
      "dataFilters": [
        {
          "developerMetadataLookup": {
            "metadataId": metadataId
          }
        }
      ]
    }
  ]
}

मेटाडेटा अपडेट करें

डेवलपर मेटाडेटा अपडेट करने के लिए, spreadsheets.batchUpdate तरीके का इस्तेमाल करें और UpdateDeveloperMetadataRequest उपलब्ध कराएं. आपको अपडेट किए जाने वाले मेटाडेटा को टारगेट करने वाला DataFilter, नई वैल्यू वाला DeveloperMetadata ऑब्जेक्ट, और अपडेट किए जाने वाले फ़ील्ड के बारे में बताने वाला फ़ील्ड मास्क तय करना होगा.

इस उदाहरण में, हमने अनुरोध में मेटाडेटा आईडी, शीट आईडी, और नई मेटाडेटा कुंजी दी है. जवाब में, डेवलपर मेटाडेटा की ये वैल्यू और अपडेट की गई मेटाडेटा कुंजी दिखती हैं.

अनुरोध

{
  "requests": [
    {
      "updateDeveloperMetadata": {
        "dataFilters": [
          {
            "developerMetadataLookup": {
              "metadataId": metadataId
            }
          }
        ],
        "developerMetadata": {
          "location": {
            "sheetId": sheetId
          },
          "metadataKey": "SalesUpdated"
        },
        "fields": "location,metadataKey"
      }
    }
  ]
}

जवाब

{
  "spreadsheetId": spreadsheetId,
  "replies": [
    {
      "updateDeveloperMetadata": {
        "developerMetadata": [
          {
            "metadataId": metadataId,
            "metadataKey": "SalesUpdated",
            "metadataValue": "2022",
            "location": {
              "locationType": "SHEET",
              "sheetId": sheetId
            },
            "visibility": "DOCUMENT"
          }
        ]
      }
    }
  ]
}

मेटाडेटा मिटाना

डेवलपर मेटाडेटा मिटाने के लिए, batchUpdate तरीके का इस्तेमाल करें. साथ ही, DeleteDeveloperMetadataRequest उपलब्ध कराएं. आपको DataFilter तय करना होगा, ताकि उस मेटाडेटा को चुना जा सके जिसे मिटाना है.

इस उदाहरण में, हमने अनुरोध में मेटाडेटा आईडी दिया है. जवाब में, मेटाडेटा आईडी के लिए डेवलपर मेटाडेटा की वैल्यू दिखती हैं.

डेवलपर मेटाडेटा हटा दिया गया है, इसकी पुष्टि करने के लिए spreadsheets.developerMetadata.get तरीके का इस्तेमाल करें. इसके लिए, मिटाए गए मेटाडेटा आईडी की जानकारी दें. आपको 404: Not Found एचटीटीपी स्टेटस कोड वाला जवाब मिलेगा. इसमें यह मैसेज होगा कि "metadataId आईडी वाला कोई डेवलपर मेटाडेटा मौजूद नहीं है.

अनुरोध

{
  "requests": [
    {
      "deleteDeveloperMetadata": {
        "dataFilter": {
          "developerMetadataLookup": {
            "metadataId": metadataId
          }
        }
      }
    }
  ]
}

जवाब

{
  "spreadsheetId": spreadsheetId,
  "replies": [
    {
      "deleteDeveloperMetadata": {
        "deletedDeveloperMetadata": [
          {
            "metadataId": metadataId,
            "metadataKey": "SalesUpdated",
            "metadataValue": "2022",
            "location": {
              "locationType": "SHEET",
              "sheetId": sheetId
            },
            "visibility": "DOCUMENT"
          }
        ]
      }
    }
  ]
}

मेटाडेटा से जुड़ी वैल्यू को पढ़ना और लिखना

इसके अलावा, डेवलपर के मेटाडेटा और अपडेट की जाने वाली वैल्यू के बारे में बताकर, पंक्तियों और कॉलम में मौजूद सेल की वैल्यू को वापस पाया जा सकता है और उन्हें अपडेट किया जा सकता है. इसके लिए, यहां दिए गए तरीकों में से सही तरीका अपनाएं. साथ ही, उससे मिलता-जुलता DataFilter इस्तेमाल करें.

मेटाडेटा के हिसाब से सेल की वैल्यू पाना

मेटाडेटा के हिसाब से सेल की वैल्यू पाने के लिए, spreadsheets.values.batchGetByDataFilter तरीके का इस्तेमाल करें. आपको स्प्रेडशीट आईडी और एक या उससे ज़्यादा ऐसे डेटा फ़िल्टर देने होंगे जो मेटाडेटा से मेल खाते हों.

इस उदाहरण में, हमने अनुरोध में मेटाडेटा आईडी दिया है. जवाब में, मेटाडेटा आईडी के लिए लाइन में मौजूद सेल की वैल्यू (मॉडल नंबर, हर महीने की बिक्री) दिखती हैं.

अनुरोध

{
  "dataFilters": [
    {
      "developerMetadataLookup": {
        "metadataId": metadataId
      }
    }
  ],
  "majorDimension": "ROWS"
}

जवाब

{
  "spreadsheetId": spreadsheetId,
  "valueRanges": [
    {
      "valueRange": {
        "range": "Sheet7!A7:Z7",
        "majorDimension": "ROWS",
        "values": [
          [
            "W-24",
            "74"
          ]
        ]
      },
      "dataFilters": [
        {
          "developerMetadataLookup": {
            "metadataId": metadataId
          }
        }
      ]
    }
  ]
}

मेटाडेटा के हिसाब से स्प्रेडशीट पाना

स्प्रेडशीट वापस पाने के दौरान, spreadsheets.getByDataFilter तरीके का इस्तेमाल करके, डेटा का सबसेट वापस पाया जा सकता है. आपको स्प्रेडशीट आईडी और एक या उससे ज़्यादा ऐसे डेटा फ़िल्टर देने होंगे जो मेटाडेटा से मेल खाते हों.

यह अनुरोध, "स्प्रेडशीट GET" के सामान्य अनुरोध की तरह काम करता है. हालांकि, इसमें यह तय करने के लिए कि मेटाडेटा वाली कौनसी शीट, ग्रिड डेटा, और अन्य ऑब्जेक्ट संसाधन दिखाए जाएं, यह देखा जाता है कि दिए गए डेटा फ़िल्टर से कौनसा मेटाडेटा मैच होता है. अगर includeGridData को सही पर सेट किया जाता है, तो तय की गई ग्रिड रेंज से इंटरसेक्ट करने वाले ग्रिड डेटा को भी शीट के लिए वापस लाया जाता है.

इस उदाहरण में, हमने अनुरोध में मेटाडेटा आईडी दिया है और includeGridData को false पर सेट किया है. जवाब में, स्प्रेडशीट और शीट, दोनों की प्रॉपर्टी दिखती हैं.

अनुरोध

{
  "dataFilters": [
    {
      "developerMetadataLookup": {
        "metadataId": metadataId
      }
    }
  ],
  "includeGridData": false
}

जवाब

{
  "spreadsheetId": spreadsheetId,
  "properties": {
    "title": "Sales Sheet",
    "locale": "en_US",
    "autoRecalc": "ON_CHANGE",
    "timeZone": "America/Los_Angeles",
    "defaultFormat": {
      "backgroundColor": {
        "red": 1,
        "green": 1,
        "blue": 1
      },
      "padding": {
        "top": 2,
        "right": 3,
        "bottom": 2,
        "left": 3
      },
      "verticalAlignment": "BOTTOM",
      "wrapStrategy": "OVERFLOW_CELL",
      "textFormat": {
        "foregroundColor": {},
        "fontFamily": "arial,sans,sans-serif",
        "fontSize": 10,
        "bold": false,
        "italic": false,
        "strikethrough": false,
        "underline": false,
        "foregroundColorStyle": {
          "rgbColor": {}
        }
      },
      "backgroundColorStyle": {
        "rgbColor": {
          "red": 1,
          "green": 1,
          "blue": 1
        }
      }
    },
    "spreadsheetTheme": {
      "primaryFontFamily": "Arial",
      "themeColors": [
        {
          "colorType": "TEXT",
          "color": {
            "rgbColor": {}
          }
        },
        {
          "colorType": "BACKGROUND",
          "color": {
            "rgbColor": {
              "red": 1,
              "green": 1,
              "blue": 1
            }
          }
        },
        {
          "colorType": "ACCENT1",
          "color": {
            "rgbColor": {
              "red": 0.25882354,
              "green": 0.52156866,
              "blue": 0.95686275
            }
          }
        },
        {
          "colorType": "ACCENT2",
          "color": {
            "rgbColor": {
              "red": 0.91764706,
              "green": 0.2627451,
              "blue": 0.20784314
            }
          }
        },
        {
          "colorType": "ACCENT3",
          "color": {
            "rgbColor": {
              "red": 0.9843137,
              "green": 0.7372549,
              "blue": 0.015686275
            }
          }
        },
        {
          "colorType": "ACCENT4",
          "color": {
            "rgbColor": {
              "red": 0.20392157,
              "green": 0.65882355,
              "blue": 0.3254902
            }
          }
        },
        {
          "colorType": "ACCENT5",
          "color": {
            "rgbColor": {
              "red": 1,
              "green": 0.42745098,
              "blue": 0.003921569
            }
          }
        },
        {
          "colorType": "ACCENT6",
          "color": {
            "rgbColor": {
              "red": 0.27450982,
              "green": 0.7411765,
              "blue": 0.7764706
            }
          }
        },
        {
          "colorType": "LINK",
          "color": {
            "rgbColor": {
              "red": 0.06666667,
              "green": 0.33333334,
              "blue": 0.8
            }
          }
        }
      ]
    }
  },
  "sheets": [
    {
      "properties": {
        "sheetId": sheetId,
        "title": "Sheet7",
        "index": 7,
        "sheetType": "GRID",
        "gridProperties": {
          "rowCount": 1000,
          "columnCount": 26
        }
      }
    }
  ],
  "spreadsheetUrl": spreadsheetUrl
}

मेटाडेटा के हिसाब से वैल्यू अपडेट करना

किसी खास मेटाडेटा से मेल खाने वाली सेल की वैल्यू अपडेट करने के लिए, spreadsheets.values.batchUpdateByDataFilter तरीके का इस्तेमाल करें. आपको स्प्रेडशीट आईडी, valueInputOption, और एक या उससे ज़्यादा DataFilterValueRange की जानकारी देनी होगी, जो मेटाडेटा से मेल खाती हो.

इस उदाहरण में, हमने अनुरोध में मेटाडेटा आईडी और अपडेट की गई लाइन की वैल्यू दी हैं. जवाब में, मेटाडेटा आईडी के लिए अपडेट की गई प्रॉपर्टी और डेटा, दोनों मिलते हैं.

अनुरोध

{
  "data": [
    {
      "dataFilter": {
        "developerMetadataLookup": {
          "metadataId": metadataId
        }
      },
      "majorDimension": "ROWS",
      "values": [
        [
          "W-24",
          "84"
        ]
      ]
    }
  ],
  "includeValuesInResponse": true,
  "valueInputOption": "USER_ENTERED"
}

जवाब

{
  "spreadsheetId": spreadsheetId,
  "totalUpdatedRows": 1,
  "totalUpdatedColumns": 2,
  "totalUpdatedCells": 2,
  "totalUpdatedSheets": 1,
  "responses": [
    {
      "updatedRange": "Sheet7!A7:B7",
      "updatedRows": 1,
      "updatedColumns": 2,
      "updatedCells": 2,
      "dataFilter": {
        "developerMetadataLookup": {
          "metadataId": metadataId
        }
      },
      "updatedData": {
        "range": "Sheet7!A7:Z7",
        "majorDimension": "ROWS",
        "values": [
          [
            "W-24",
            "84"
          ]
        ]
      }
    }
  ]
}

मेटाडेटा के हिसाब से वैल्यू हटाएं

किसी खास मेटाडेटा से मेल खाने वाली सेल की वैल्यू मिटाने के लिए, spreadsheets.values.batchClearByDataFilter तरीके का इस्तेमाल करें. आपको मेटाडेटा चुनने के लिए, डेटा फ़िल्टर तय करना होगा.

अनुरोध

इस उदाहरण में, हमने अनुरोध में मेटाडेटा आईडी दिया है. जवाब में, स्प्रेडशीट आईडी और मिटाई गई रेंज की जानकारी मिलती है.

{
  "dataFilters": [
    {
      "developerMetadataLookup": {
        "metadataId": metadataId
      }
    }
  ]
}

जवाब

{
  "spreadsheetId": spreadsheetId,
  "clearedRanges": [
    "Sheet7!A7:Z7"
  ]
}

मेटाडेटा के स्टोरेज की सीमाएं

स्प्रेडशीट में सेव किए जा सकने वाले मेटाडेटा की कुल सीमा तय है. इस सीमा को वर्णों में मापा जाता है. इसमें दो कॉम्पोनेंट होते हैं:

आइटम स्टोरेज की सीमा तय करना
स्प्रेडशीट 30,000 वर्ण
स्प्रेडशीट में मौजूद हर शीट 30,000 वर्ण

स्प्रेडशीट के लिए, ज़्यादा से ज़्यादा 30,000 वर्ण सेव किए जा सकते हैं. इसके अलावा, स्प्रेडशीट में मौजूद हर शीट के लिए 30,000 वर्ण सेव किए जा सकते हैं. जैसे,पहली शीट के लिए 30, 000 वर्ण,दूसरी शीट के लिए 30, 000 वर्ण वगैरह. इसलिए, तीन पेजों वाली स्प्रेडशीट में डेवलपर मेटाडेटा के तौर पर 1,20,000 वर्ण शामिल किए जा सकते हैं.

developerMetadata ऑब्जेक्ट के मुख्य और वैल्यू एट्रिब्यूट में मौजूद हर वर्ण को इस सीमा में शामिल करके गिना जाता है.