फ़ाइल के कॉन्टेंट को सुरक्षित रखना

Google Drive API, फ़ाइल में बदलाव होने से रोकने के कई तरीके उपलब्ध कराता है. इनमें, फ़ाइल के कॉन्टेंट पर पाबंदी लगाना और फ़ाइलों को डाउनलोड करने, प्रिंट करने या कॉपी करने पर रोक लगाना शामिल है.

Drive में कॉन्टेंट पर लगी पाबंदियों की मदद से, फ़ाइलों को सिर्फ़ पढ़ने के लिए उपलब्ध कराना

Google Drive की किसी फ़ाइल में कॉन्टेंट पर पाबंदी लगाई जा सकती है, ताकि उपयोगकर्ता ये काम न कर पाएं:

  • टाइटल में बदलाव किया जा रहा है
  • कॉन्टेंट में बदलाव करना
  • संशोधन अपलोड करना
  • टिप्पणियां जोड़ना या उनमें बदलाव करना

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

Drive में किसी फ़ाइल पर कॉन्टेंट पर पाबंदी लगाने या हटाने के लिए, उपयोगकर्ता के पास उससे जुड़ी अनुमतियां होनी चाहिए. 'मेरी ड्राइव' या 'शेयर की गई ड्राइव' में मौजूद, capabilities.canModifyEditorContentRestriction वाली फ़ाइल या फ़ोल्डर के लिए, आपको role=writer असाइन करना होगा. 'मेरी ड्राइव' या शेयर की गई ड्राइव में मौजूद जिस फ़ाइल या फ़ोल्डर के लिए कॉन्टेंट पर ownerRestricted की पाबंदी लगी है उसके लिए, आपके पास उस फ़ाइल या role=organizer का मालिकाना हक होना चाहिए. पाबंदी वाले कॉन्टेंट वाले आइटम को देखने के लिए, उपयोगकर्ताओं के पास role=reader या इसके बाद का वर्शन होना चाहिए. भूमिकाओं की पूरी सूची देखने के लिए, भूमिकाएं और अनुमतियां देखें. किसी फ़ाइल की अनुमतियां बदलने के लिए, अनुमतियां बदलना लेख पढ़ें.

कॉन्टेंट पर पाबंदी सेट करने के लिए, files संसाधन पर contentRestrictions.readOnly बूलियन फ़ील्ड का इस्तेमाल किया जा सकता है. ध्यान दें कि किसी आइटम पर कॉन्टेंट से जुड़ी पाबंदी सेट करने पर, मौजूदा पाबंदी बदल जाती है.

कॉन्टेंट पर पाबंदियों के उदाहरण

Drive के किसी आइटम पर कॉन्टेंट से जुड़ी पाबंदी होने का मतलब है कि उपयोगकर्ताओं को उस कॉन्टेंट में बदलाव करने की अनुमति नहीं है. ऐसा नीचे दी गई कुछ वजहों से हो सकता है:

  • समीक्षा या ऑडिट के दौरान, साथ मिलकर बनाए जा रहे दस्तावेज़ पर काम रोकना.
  • किसी आइटम की स्थिति को 'मंज़ूरी मिल गई है' जैसी किसी फ़ाइनल स्थिति पर सेट करना.
  • संवेदनशील मीटिंग के दौरान बदलावों को रोकना.
  • ऑटोमेटेड सिस्टम (कार्रवाइयों को अपने-आप पूरा करने वाले सिस्टम) से मैनेज किए जाने वाले वर्कफ़्लो में, बाहरी बदलावों को रोकना.
  • Google Apps Script और Google Workspace ऐड-ऑन से किए जाने वाले बदलावों पर पाबंदी लगाना.
  • किसी दस्तावेज़ में अनजाने में होने वाले बदलावों से बचना.

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

कॉन्टेंट पर लगी पाबंदियों वाली फ़ाइलें मैनेज करना

Google Docs, Google Sheets, और Google Slides के साथ-साथ अन्य सभी फ़ाइलों में, कॉन्टेंट से जुड़ी पाबंदियां हो सकती हैं.

किसी आइटम पर पाबंदी लगने से, उसके टाइटल और कॉन्टेंट में बदलाव नहीं होता. इनमें ये बदलाव शामिल हैं:

  • टिप्पणियां और सुझाव (Docs, Sheets, Slides, और बाइनरी फ़ाइलों पर)
  • बाइनरी फ़ाइल में किए गए बदलाव
  • Docs में टेक्स्ट और फ़ॉर्मैटिंग
  • Sheets में टेक्स्ट या फ़ॉर्मूले, Sheets का लेआउट, और Sheets में इंस्टेंस
  • Slides में मौजूद सारा कॉन्टेंट, साथ ही स्लाइड का क्रम और संख्या

कुछ फ़ाइल टाइप में कॉन्टेंट पर पाबंदी नहीं लगाई जा सकती. इसके कुछ उदाहरण यहां दिए गए हैं:

कॉन्टेंट पर पाबंदी जोड़ना

फ़ाइल पर पाबंदी लगाने के लिए, files.update वाले तरीके का इस्तेमाल करें. साथ ही, contentRestrictions.readOnly फ़ील्ड को true पर सेट करें. पाबंदी जोड़ने की वजह बताने के लिए, reason जोड़ें. हालांकि, ऐसा करना ज़रूरी नहीं है. जैसे, "अनुबंध पर हस्ताक्षर हो गया है." यहां दिए गए कोड के सैंपल में, कॉन्टेंट पर पाबंदी जोड़ने का तरीका बताया गया है:

Java

File updatedFile =
  new File()
      .setContentRestrictions(
          ImmutableList.of(new ContentRestriction().setReadOnly(true).setReason("Finalized contract."));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': True, 'reason':'Finalized contract.'}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Set a content restriction on a file.
* @return{obj} updated file
**/
async function addContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': True,
    'reason': 'Finalized contract.',
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

FILE_ID को उस फ़ाइल के fileId से बदलें जिसमें बदलाव करना है.

सैंपल कोड चलाने पर, फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी लग जाती है. साथ ही, Google Drive के यूज़र इंटरफ़ेस (यूआई) में फ़ाइल के नाम के बगल में एक लॉक का चिह्न () दिखता है. अब फ़ाइल को सिर्फ़ पढ़ा जा सकता है.

Drive की फ़ाइलों की सूची में मौजूद, कॉन्टेंट पर पाबंदी वाली फ़ाइल.
पहली इमेज. Drive की फ़ाइल सूची में मौजूद, कॉन्टेंट पर पाबंदी वाली फ़ाइल.

कॉन्टेंट पर लगी पाबंदी हटाना

फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाने के लिए, files.update तरीके का इस्तेमाल करें. इसके लिए, contentRestrictions.readOnly फ़ील्ड को false पर सेट करें. यहां दिए गए कोड सैंपल में, कॉन्टेंट पर लगी पाबंदी हटाने का तरीका बताया गया है:

Java

File updatedFile =
new File()
    .setContentRestrictions(
        ImmutableList.of(new ContentRestriction().setReadOnly(false));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': False}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Remove a content restriction on a file.
* @return{obj} updated file
**/
async function removeContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': False,
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

FILE_ID को उस फ़ाइल के fileId से बदलें जिसमें बदलाव करना है.

सैंपल कोड चलाने के बाद, फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी नहीं रहती.

कॉन्टेंट पर लगी पाबंदी को हटाने और कॉन्टेंट में बदलाव करने की अनुमति देने के लिए, Drive के यूज़र इंटरफ़ेस (यूआई) का इस्तेमाल किया जा सकता है. हालांकि, इसके लिए ज़रूरी है कि आपके पास सही अनुमतियां हों. ऐसा करने के लिए, आपके पास दो विकल्प हैं:

  1. Drive में, कॉन्टेंट पर पाबंदी वाली फ़ाइल पर राइट क्लिक करें और अनलॉक करें पर क्लिक करें.

    Drive में मौजूद फ़ाइलों की सूची से किसी फ़ाइल पर लगी पाबंदी को हटाएं.
    दूसरी इमेज. Drive की फ़ाइल सूची में, फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाना.
  2. कॉन्टेंट पर पाबंदी वाली फ़ाइल खोलें और (लॉक मोड) > फ़ाइल अनलॉक करें पर क्लिक करें.

    किसी दस्तावेज़ में मौजूद फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाना.
    तीसरी इमेज. किसी दस्तावेज़ में से फ़ाइल पर लगी पाबंदी को हटाएं.

कॉन्टेंट पर लगी पाबंदी देखना

कॉन्टेंट पर लगी पाबंदी की जांच करने के लिए, contentRestrictions फ़ील्ड के साथ files.get तरीके का इस्तेमाल करें. यहां दिए गए कोड सैंपल में, कॉन्टेंट पर लगी पाबंदी की स्थिति देखने का तरीका बताया गया है:

Java

File response = driveService.files().get("FILE_ID").setFields("contentRestrictions").execute();

Python

response = drive_service.files().get(fileId="FILE_ID", fields = "contentRestrictions").execute();

Node.js

/**
* Get content restrictions on a file.
* @return{obj} updated file
**/
async function fetchContentRestrictions() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  try {
    const response = await service.files.get({
      fileId: 'FILE_ID',
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

FILE_ID को उस फ़ाइल के fileId से बदलें जिसकी आपको जांच करनी है.

सैंपल कोड चलाने पर, यह तरीका ContentRestriction संसाधन दिखाता है.

कॉन्टेंट पर पाबंदी जोड़ें. इसमें सिर्फ़ फ़ाइल का मालिक बदलाव कर सकता है

फ़ाइल के कॉन्टेंट पर पाबंदी जोड़ने के लिए, files.update तरीके का इस्तेमाल करें. साथ ही, contentRestrictions.ownerRestricted बूलियन फ़ील्ड को true पर सेट करें, ताकि सिर्फ़ फ़ाइल के मालिक ही इस सुविधा को चालू या बंद कर सकें. यहां दिए गए कोड सैंपल में, सिर्फ़ फ़ाइल के मालिकों के लिए कॉन्टेंट पर पाबंदी जोड़ने का तरीका बताया गया है:

Java

File updatedFile =
  new File()
      .setContentRestrictions(
          ImmutableList.of(new ContentRestriction().setReadOnly(true).setOwnerRestricted(true).setReason("Finalized contract."));

File response = driveService.files().update("FILE_ID", updatedFile).setFields("contentRestrictions").execute();

Python

content_restriction = {'readOnly': True, 'ownerRestricted': True, 'reason':'Finalized contract.'}

response = drive_service.files().update(fileId="FILE_ID", body = {'contentRestrictions' : [content_restriction]}, fields = "contentRestrictions").execute();

Node.js

/**
* Set an owner restricted content restriction on a file.
* @return{obj} updated file
**/
async function addOwnerRestrictedContentRestriction() {
  // Get credentials and build service
  // TODO (developer) - Use appropriate auth mechanism for your app

  const {GoogleAuth} = require('google-auth-library');
  const {google} = require('googleapis');

  const auth = new GoogleAuth({scopes: 'https://www.googleapis.com/auth/drive'});
  const service = google.drive({version: 'v3', auth});
  const contentRestriction = {
    'readOnly': True,
    'ownerRestricted': True,
    'reason': 'Finalized contract.',
  };
  const updatedFile = {
    'contentRestrictions': [contentRestriction],
  };
  try {
    const response = await service.files.update({
      fileId: 'FILE_ID',
      resource: updatedFile,
      fields: 'contentRestrictions',
    });
    return response;
  } catch (err) {
    // TODO (developer) - Handle error
    throw err;
  }
}

FILE_ID की जगह उस फ़ाइल का fileId डालें जिसमें आपको बदलाव करना है.

सैंपल कोड चलाने पर, फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी लग जाती है. साथ ही, सिर्फ़ फ़ाइल के मालिक ही इस पाबंदी को हटा सकते हैं. अगर आप फ़ाइल के मालिक हैं, तो Drive के यूज़र इंटरफ़ेस (यूआई) में फ़ाइल के नाम के बगल में, एक ऐक्टिव लॉक सिंबल () दिखेगा. अगर आपके पास फ़ाइल का मालिकाना हक नहीं है, तो लॉक का निशान धुंधला दिखता है.

ownerRestricted फ़्लैग हटाने के लिए, files.update तरीके का इस्तेमाल करें. इसके लिए, contentRestrictions.ownerRestricted फ़ील्ड को false पर सेट करें.

कॉन्टेंट पर पाबंदी लगाने की सुविधाएं

files संसाधन में बूलियन capabilities फ़ील्ड का एक कलेक्शन होता है. इसका इस्तेमाल यह बताने के लिए किया जाता है कि किसी फ़ाइल पर कार्रवाई की जा सकती है या नहीं.

कॉन्टेंट पर पाबंदियों में ये capabilities शामिल हैं:

ज़्यादा जानकारी के लिए, सुविधाएं देखें.

capabilities फ़ाइल को वापस पाने के उदाहरण के लिए, उपयोगकर्ता की अनुमतियों की पुष्टि करना देखें.

उपयोगकर्ताओं को, आपकी फ़ाइल डाउनलोड करने, प्रिंट करने या उसे कॉपी करने से रोकना

आपके पास यह तय करने का विकल्प होता है कि role=commenter या role=reader अनुमतियों वाले उपयोगकर्ता, Drive, Docs, Sheets, और Slides में फ़ाइलों को कैसे डाउनलोड, प्रिंट, और कॉपी कर सकते हैं.

फ़ाइलों को डाउनलोड, प्रिंट, और कॉपी करने के विकल्प हटाने के लिए, files.update तरीके का इस्तेमाल करें. इसके लिए, copyRequiresWriterPermission बूलियन फ़ील्ड को true पर सेट करें.