Google Drive API, फ़ाइल में बदलाव करने से रोकने के कई तरीके उपलब्ध कराता है. इनमें फ़ाइल के कॉन्टेंट पर पाबंदी लगाना और फ़ाइलों को डाउनलोड, प्रिंट या कॉपी करने के विकल्प पर पाबंदी लगाना शामिल है.
Drive में कॉन्टेंट पर पाबंदियां लगाकर, फ़ाइलों को सिर्फ़ पढ़ने के लिए उपलब्ध कराना
Google Drive में मौजूद किसी फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी लगाई जा सकती है. इससे उपयोगकर्ताओं को ये काम करने से रोका जा सकता है:
- टाइटल में बदलाव करना
- कॉन्टेंट में बदलाव करना
- बदलाव अपलोड करना
- टिप्पणियां जोड़ना या उनमें बदलाव करना
कॉन्टेंट पर पाबंदी लगाने का मतलब, ऐक्सेस पर पाबंदी लगाना नहीं है. उपयोगकर्ता, फ़ाइल के कॉन्टेंट में बदलाव नहीं कर सकते. हालांकि, उन्हें अपने ऐक्सेस लेवल के हिसाब से अन्य कार्रवाइयां करने की अनुमति होती है. उदाहरण के लिए, बदलाव करने का ऐक्सेस रखने वाला उपयोगकर्ता अब भी किसी आइटम को एक जगह से दूसरी जगह ले जा सकता है या उसकी शेयर करने की सेटिंग बदल सकता है.
Drive में मौजूद किसी फ़ाइल पर कॉन्टेंट से जुड़ी पाबंदी लगाने या हटाने के लिए, उपयोगकर्ता के पास उससे जुड़ी permissions
होनी चाहिए. अगर आपको capabilities.canModifyEditorContentRestriction
वाली फ़ाइल या फ़ोल्डर को 'मेरी ड्राइव' या 'शेयर की गई ड्राइव' में ले जाना है, तो आपके पास role=writer
होना चाहिए. अगर 'मेरी ड्राइव' या शेयर की गई ड्राइव में मौजूद किसी फ़ाइल या फ़ोल्डर पर ownerRestricted
कॉन्टेंट से जुड़ी पाबंदी लगी है, तो आपके पास उस फ़ाइल का मालिकाना हक होना चाहिए या आपके पास 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 में मौजूद सारा कॉन्टेंट, साथ ही स्लाइड का क्रम और उनकी संख्या
कुछ फ़ाइल टाइप में कॉन्टेंट से जुड़ी पाबंदी नहीं लगाई जा सकती. इसके कुछ उदाहरण यहां दिए गए हैं:
- Google Forms
- Google Sites
- Google Drawings
- शॉर्टकट और तीसरे पक्ष के शॉर्टकट. ज़्यादा जानकारी के लिए, अपने ऐप्लिकेशन में सेव किए गए कॉन्टेंट का शॉर्टकट बनाना और Drive फ़ाइल का शॉर्टकट बनाना लेख पढ़ें.
कॉन्टेंट पर पाबंदी जोड़ना
किसी फ़ाइल के कॉन्टेंट पर पाबंदी लगाने के लिए, 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 के यूज़र इंटरफ़ेस (यूआई) में फ़ाइल के नाम के बगल में लॉक का निशान ( ) दिखता है. यह फ़ाइल अब सिर्फ़ पढ़ने के लिए उपलब्ध है.
कॉन्टेंट पर लगी पाबंदी हटाना
किसी फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाने के लिए, 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 के यूज़र इंटरफ़ेस (यूआई) का भी इस्तेमाल किया जा सकता है. हालांकि, इसके लिए आपके पास ज़रूरी अनुमतियां होनी चाहिए. ऐसा करने के लिए, आपके पास दो विकल्प हैं:
Drive में, उस फ़ाइल पर राइट क्लिक करें जिस पर कॉन्टेंट से जुड़ी पाबंदी लगी है. इसके बाद, अनलॉक करें
पर क्लिक करें.दूसरी इमेज. Drive में मौजूद फ़ाइलों की सूची में, किसी फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाना. कॉन्टेंट पर पाबंदी वाली फ़ाइल खोलें. इसके बाद, (लॉक किया गया मोड) > फ़ाइल अनलॉक करें पर क्लिक करें.
तीसरी इमेज. किसी दस्तावेज़ में मौजूद फ़ाइल के कॉन्टेंट पर लगी पाबंदी हटाना.
कॉन्टेंट पर लगी पाबंदी की जांच करना
कॉन्टेंट से जुड़ी पाबंदी की जांच करने के लिए, 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.canModifyEditorContentRestriction
: इससे पता चलता है कि मौजूदा उपयोगकर्ता, कॉन्टेंट पर पाबंदी लगा सकता है या उसमें बदलाव कर सकता है या नहीं.capabilities.canModifyOwnerContentRestriction
: इससे पता चलता है कि मौजूदा उपयोगकर्ता, मालिक के कॉन्टेंट पर पाबंदी लगा सकता है या उसमें बदलाव कर सकता है या नहीं.capabilities.canRemoveContentRestriction
: क्या मौजूदा उपयोगकर्ता, लागू की गई कॉन्टेंट पर पाबंदी (अगर मौजूद है) को हटा सकता है.
ज़्यादा जानकारी के लिए, फ़ाइल की सुविधाओं के बारे में जानकारी लेख पढ़ें.
फ़ाइल capabilities
को वापस पाने के उदाहरण के लिए, फ़ाइल की सुविधाएं पाना देखें.
लोगों को, आपकी फ़ाइल डाउनलोड करने, प्रिंट करने या उसे कॉपी करने से रोकना
आपके पास यह तय करने का विकल्प होता है कि उपयोगकर्ता, Drive, Docs, Sheets, और Slides में फ़ाइलों को किस तरह डाउनलोड, प्रिंट, और कॉपी कर सकते हैं.
यह तय करने के लिए कि उपयोगकर्ता किसी फ़ाइल के मालिक या आयोजक की ओर से डाउनलोड करने पर लगाई गई पाबंदियों को बदल सकता है या नहीं, capabilities.canChangeItemDownloadRestriction
बूलियन फ़ील्ड देखें. अगर capabilities.canChangeItemDownloadRestriction
को true
पर सेट किया जाता है, तो फ़ाइल को डाउनलोड करने पर पाबंदियां लगाई जा सकती हैं. ज़्यादा जानकारी के लिए, फ़ाइल की सुविधाओं के बारे में जानें लेख पढ़ें.
किसी फ़ाइल को डाउनलोड करने से जुड़ी पाबंदियां लागू करने के लिए, files.update
तरीके का इस्तेमाल करके downloadRestrictions
फ़ील्ड सेट करें. DownloadRestrictionsMetadata
ऑब्जेक्ट का इस्तेमाल करके, फ़ील्ड सेट किया जा सकता है.
DownloadRestrictionsMetadata
ऑब्जेक्ट में दो फ़ील्ड होते हैं:
itemDownloadRestriction
और effectiveDownloadRestrictionWithContext
. दोनों फ़ील्ड पढ़े जा सकते हैं, लेकिन सिर्फ़ itemDownloadRestriction
को सेट किया जा सकता है. itemDownloadRestriction
फ़ील्ड, DownloadRestriction
ऑब्जेक्ट दिखाता है. DownloadRestriction
ऑब्जेक्ट में दो अलग-अलग बूलियन फ़ील्ड होते हैं: restrictedForReaders
और restrictedForWriters
.
itemDownloadRestriction
फ़ील्ड सेट करते समय, फ़ाइल डाउनलोड करने पर पाबंदी लगाने की सुविधा सीधे तौर पर मालिक या आयोजक लागू करता है. इसमें शेयर की गई ड्राइव की सेटिंग या डेटा लीक होने की रोकथाम (डीएलपी) के नियमों को शामिल नहीं किया जाता. ज़्यादा जानकारी के लिए,
डीएलपी के बारे में जानकारी लेख पढ़ें.
अगर itemDownloadRestriction
फ़ील्ड को अपडेट करके itemDownloadRestriction
फ़ील्ड को true
पर सेट किया जाता है, तो इसका मतलब है कि restrictedForReaders
true
है.restrictedForWriters
इसी तरह, restrictedForWriters
को true
और restrictedForReaders
को false
पर सेट करने का मतलब है कि restrictedForWriters
और restrictedForReaders
, दोनों को true
पर सेट किया गया है.
effectiveDownloadRestrictionWithContext
फ़ील्ड के लिए, फ़ाइल डाउनलोड करने पर पाबंदी लगाई जाती है. साथ ही, यह पाबंदी, पाबंदी से जुड़ी सभी सेटिंग और डीएलपी नियमों के हिसाब से लगाई जाती है.
effectiveDownloadRestrictionWithContext
फ़ील्ड को restrictedForWriters
या restrictedForReaders
पर सेट किया जा सकता है. अगर फ़ाइल की सेटिंग, शेयर की गई Drive की सेटिंग या डीएलपी नियमों (कॉन्टेक्स्ट के साथ लागू होने वाले नियमों के साथ) में, भूमिकाओं के लिए डाउनलोड या कॉपी करने से जुड़ी कोई पाबंदी है, तो वैल्यू को true
पर सेट किया जाता है. ऐसा न होने पर, वैल्यू को false
पर सेट किया जाता है.
पिछले वर्शन के गेम खेलने की सुविधा
हमारा सुझाव है कि आप DownloadRestriction
ऑब्जेक्ट का इस्तेमाल करें. इससे यह तय किया जा सकता है कि उपयोगकर्ता, फ़ाइलों को कैसे डाउनलोड, प्रिंट, और कॉपी कर सकते हैं.
अगर आपको copyRequiresWriterPermission
बूलियन फ़ील्ड का इस्तेमाल करना है, तो फ़ील्ड से डेटा पढ़ने और उसमें डेटा लिखने की सुविधा अलग-अलग होती है.
copyRequiresWriterPermission
फ़ील्ड की मिली हुई वैल्यू से पता चलता है कि role=commenter
या role=reader
की अनुमति वाले उपयोगकर्ता, Drive में मौजूद फ़ाइलों को डाउनलोड, प्रिंट या कॉपी कर सकते हैं या नहीं. फ़ील्ड वैल्यू, फ़ाइल सेटिंग, शेयर की गई ड्राइव की सेटिंग या डीएलपी नियमों के कॉम्बिनेशन को दिखाती है. हालांकि, डीएलपी के नियमों के लिए कॉन्टेक्स्ट का आकलन करने की सुविधा शामिल नहीं है.
copyRequiresWriterPermission
फ़ील्ड को false
पर सेट करने से, restrictedForWriters
और restrictedForReaders
, दोनों फ़ील्ड false
पर अपडेट हो जाते हैं. इसका मतलब है कि सभी उपयोगकर्ताओं के लिए, डाउनलोड करने या कॉपी करने से जुड़ी पाबंदी की सेटिंग हटा दी जाती हैं.
डाउनलोड, प्रिंट, और कॉपी करने की सुविधाओं को कंट्रोल करने वाले फ़ील्ड
नीचे दी गई टेबल में, files
संसाधन फ़ील्ड दिए गए हैं. इनसे डाउनलोड, प्रिंट, और कॉपी करने की सुविधा पर असर पड़ता है:
फ़ील्ड | ब्यौरा | वर्शन |
---|---|---|
capabilities.canCopy |
इससे पता चलता है कि मौजूदा उपयोगकर्ता किसी फ़ाइल को कॉपी कर सकता है या नहीं. | v2 और v3 |
capabilities.canDownload |
इससे पता चलता है कि मौजूदा उपयोगकर्ता किसी फ़ाइल को डाउनलोड कर सकता है या नहीं. | v2 और v3 |
capabilities.canChangeCopyRequiresWriterPermission |
मौजूदा उपयोगकर्ता, किसी फ़ाइल की copyRequiresWriterPermission पाबंदी में बदलाव कर सकता है या नहीं. |
v2 और v3 |
capabilities.canChangeItemDownloadRestriction |
इससे पता चलता है कि मौजूदा उपयोगकर्ता, किसी फ़ाइल को डाउनलोड करने पर लगी पाबंदी में बदलाव कर सकता है या नहीं. | सिर्फ़ v3 |
copyRequiresWriterPermission |
क्या पढ़ने वालों और टिप्पणी करने वालों के लिए, इस फ़ाइल को कॉपी, प्रिंट या डाउनलोड करने के विकल्प बंद किए जाने चाहिए. | v2 और v3 |
downloadRestrictions |
किसी फ़ाइल को डाउनलोड करने पर लागू होने वाली पाबंदियां. | सिर्फ़ v3 |