फ़ील्ड मास्क का इस्तेमाल करना

फ़ील्ड मास्क, एपीआई कॉलर के लिए उन फ़ील्ड की सूची बनाने का एक तरीका है जिन्हें अनुरोध के ज़रिए दिखाना या अपडेट करना चाहिए. FieldMask का इस्तेमाल करने से, एपीआई को ग़ैर-ज़रूरी काम से बचने में मदद मिलती है. साथ ही, इससे उसकी परफ़ॉर्मेंस भी बेहतर होती है. Google Docs API में, फ़ील्ड मास्क का इस्तेमाल, पढ़ने और अपडेट करने, दोनों तरीकों के लिए किया जाता है.

फ़ील्ड मास्क की मदद से पढ़ना

दस्तावेज़ बड़े हो सकते हैं और अक्सर आपको पढ़ने के अनुरोध से मिले Document संसाधन के हर हिस्से की ज़रूरत नहीं होती. fields यूआरएल पैरामीटर का इस्तेमाल करके, यह तय किया जा सकता है कि Docs API के रिस्पॉन्स में क्या दिखे. बेहतर परफ़ॉर्मेंस के लिए, जवाब में सिर्फ़ उन फ़ील्ड की जानकारी दें जो आपके काम के हैं.

फ़ील्ड पैरामीटर का फ़ॉर्मैट, FieldMask की JSON एन्कोडिंग की तरह ही होता है. आसान शब्दों में कहें, तो एक से ज़्यादा फ़ील्ड को कॉमा से अलग किया जाता है और सबफ़ील्ड को बिंदु से अलग किया जाता है. फ़ील्ड के नाम camelCase या separated_by_underscores में दिए जा सकते हैं. सुविधा के लिए, एक ही तरह के कई सबफ़ील्ड को ब्रैकेट में रखा जा सकता है.

यहां दिए गए documents.get अनुरोध के उदाहरण में, title,tabs(documentTab(body.content(paragraph))),revisionId के फ़ील्ड मास्क का इस्तेमाल किया गया है. इससे दस्तावेज़ के title, Body ऑब्जेक्ट के Paragraph (सभी टैब से) और दस्तावेज़ के revisionId को फ़ेच किया जाता है:

GET https://docs.googleapis.com/v1/documents/documentId?fields=title,tabs(documentTab(body.content(paragraph))),revisionId

इस मेथड कॉल का रिस्पॉन्स, एक Document ऑब्जेक्ट होता है. इसमें फ़ील्ड मास्क में अनुरोध किए गए कॉम्पोनेंट होते हैं:

{
  "title": "TITLE",
  "revisionId": "REVISION_ID",
  "tabs": [
    {
      "documentTab": {
        "body": {
          "content": [
            {},
            {
              "paragraph": {
                "elements": [
                  {
                    "startIndex": 1,
                    "endIndex": 59,
                    "textRun": {
                      "content": "CONTENT",
                      "textStyle": {}
                    }
                  }
                ],
                "paragraphStyle": {
                  "namedStyleType": "NORMAL_TEXT",
                  "direction": "LEFT_TO_RIGHT"
                }
              }
            }
          ]
        }
      }
    }
  ]
}

फ़ील्ड मास्क की मदद से अपडेट करना

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

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

अपडेट फ़ील्ड मास्क का सिंटैक्स और रीड फ़ील्ड मास्क एक जैसे होते हैं.

नीचे दिए गए उदाहरण में, UpdateTextStyleRequest का इस्तेमाल करके, दस्तावेज़ में "Google Docs API" शब्दों को range 5 से 20 के बीच बोल्ड किया गया है:

POST https://docs.googleapis.com/v1/documents/documentId:batchUpdate
{
  "title": "TITLE",
  "revisionId": "REVISION_ID",
  "suggestionsViewMode": "SUGGESTIONS_INLINE",
  "documentId": "DOCUMENT_ID",
  "tabs": [
    {
      "documentTab": {
        "body": {
          "content": [
            {
              "endIndex": 1,
              "sectionBreak": {
                "sectionStyle": {
                  "columnSeparatorStyle": "NONE",
                  "contentDirection": "LEFT_TO_RIGHT",
                  "sectionType": "CONTINUOUS"
                }
              }
            },
            {
              "startIndex": 1,
              "endIndex": 59,
              "paragraph": {
                "elements": [
                  {
                    "startIndex": 1,
                    "endIndex": 5,
                    "textRun": {
                      "content": "CONTENT",
                      "textStyle": {}
                    }
                  },
                  {
                    "startIndex": 5,
                    "endIndex": 20,
                    "textRun": {
                      "content": "CONTENT",
                      "textStyle": {
                        "bold": true
                      }
                    }
                  },
                  {
                    "startIndex": 20,
                    "endIndex": 59,
                    "textRun": {
                      "content": "CONTENT",
                      "textStyle": {}
                    }
                  }
                ],
                "paragraphStyle": {
                  "namedStyleType": "NORMAL_TEXT",
                  "direction": "LEFT_TO_RIGHT"
                }
              }
            }
          ]
        },
        {
          ... // style details
        },
      }
    }
  ],
}