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

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 पर सेट करें.