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

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 में सभी कॉन्टेंट के साथ-साथ स्लाइड का क्रम और संख्या

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

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

फ़ाइल के कॉन्टेंट पर पाबंदी जोड़ने के लिए, contentRestrictions.readOnly फ़ील्ड को true पर सेट करके, files.update तरीके का इस्तेमाल करें. पाबंदी जोड़ने की वजह बताने के लिए, 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 पर सेट करें.