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

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

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

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

  • स्प्रेडशीट में, अलग-अलग इकाइयों और जगहों के साथ डेटा को जोड़ना—उदाहरण के लिए, 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 अलग-अलग होना चाहिए. अगर आपने मेटाडेटा बनाया है और उसके आईडी फ़ील्ड को खाली छोड़ दिया है, तो एपीआई एक आईडी असाइन करेगा. इस आईडी का इस्तेमाल, मेटाडेटा की पहचान करने के लिए किया जा सकता है. वहीं, कुंजियों और अन्य एट्रिब्यूट का इस्तेमाल, मेटाडेटा के सेट की पहचान करने के लिए किया जा सकता है.

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

मेटाडेटा बनाने के लिए, 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 के तरीके का इस्तेमाल करें. इसके लिए, मेटाडेटा और डेवलपर मेटाडेटा का यूनीक metadataId वाला spreadsheetId बताएं.

एक उदाहरण दिखाएं

अनुरोध

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

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 को 'गलत' पर सेट किया है. जवाब में, स्प्रेडशीट और शीट, दोनों की प्रॉपर्टी दिखती हैं.

अनुरोध

{
  "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 ऑब्जेक्ट के की और वैल्यू एट्रिब्यूट में मौजूद हर वर्ण को इस सीमा में गिना जाता है.